PHP中new static()与new self()以及self与static的区别异同分析

self与static的区别

self - 就是这个类,是代码段里面的这个类。

static - PHP 5.3加进来的只得是当前这个类,有点像$this的意思,从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类。

代码示例:

class A {

  public static function get_self() {

    return new self();

  }

  public static function get_static() {

    return new static();

  }

}

class B extends A {}

echo get_class(B::get_self()); // A

echo get_class(B::get_static()); // B

echo get_class(A::get_static()); // A

self调用的就是本身代码片段这个类,而static调用的是从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类,下面的例子比较容易明白些。

class A{

    protected static $str="This is A";

    public static function get_info(){

        echo self::$str;

    }

}

class B extends A{

    protected static $str = "This is B";

}

B::get_info();//This is A

class Ao{

    protected static $str="This is Ao";

    public static function get_info(){

        echo static::$str;

    }

}

class Bo extends Ao{

    protected static $str = "This is Bo";

}

Bo::get_info();//This is Bo

总结 其实static就是调用的当前调用的类

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,104评论 19 139
  • 一、数组 1、数组定义 数组就是一个键值对组成的语言结构,键类似于酒店的房间号,值类似于酒店房间里存储的东西。 $...
    空谷悠阅读 890评论 4 11
  • 这周痛下心来好好学习,却愤懑发现心静不下来,学习效率低下,走神,想着早退,这学习状态让躁动的心更加烦躁。明明已经...
    博士说阅读 405评论 0 0
  • 惬意的时光,平淡的日子,偷着乐、开怀笑;看天高地阔,感小草遍迹天涯,慨戈壁亦生机无限,渺小不在,目光炯炯,孤独不在...
    朔泉明贤阅读 309评论 0 0
  • 《TED:睡眠不足会发生什么》 如果一个人只有才智而没有精力的话,那他就是失败的。——尚富尔 精彩语句: 1,不睡...
    大尉说说阅读 824评论 0 0

友情链接更多精彩内容