self , static 都是何方神圣?

Posted yinguohai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了self , static 都是何方神圣?相关的知识,希望对你有一定的参考价值。

 

前言:

  php中 this  用于代指 对象, 而代指类的却有3个:self , static , parent

 

self , static , parrent 既然都能代指类,那么他们之间又有哪些区别呢?

  • self , static : 代指 自身类
  • parent        : 代指  父类

 

self , static 又有何区别?

  问题来了,既然self , static 都代指自身,那么php为嘛要搞出两个东东来代指自身呢?

  官方解释: 

    self    :  调用自身代码段的静态成员,

    static : 调用的是从内存的堆 中拿出此类的静态成员

  好懵逼的样子对不对?每关系,大海君给你讲个例子就明白了。

 

Usage Example 1:

技术图片

技术图片

分析:

  • 类b中和类a 中都有一个静态属性 $test
  • 类a 中 有一个方法  static_test() , 里面使用了 selfstatic 来调用静态成员
  • 结果显示:  
    • static 调用的静态成员 $test 是 类b中定义的 即: class b
    • self 调用的静态成员 $test 是类a中定义的, 即   class a
    • 所以 self , 和 static 的区别在于继承的时候会显示出来     
  • 生活中的例子: 
    •   b : 儿子 ,a :  父亲  ,  $test :  遗产
    • 正常情况下, 儿子是会继承父亲的财富的,花父亲的钱, 这叫 self 
    • 儿子继承了父亲的财富,但是还是花自己上班赚来的钱,这叫 static 

 

以上是关于self , static 都是何方神圣?的主要内容,如果未能解决你的问题,请参考以下文章

fd究竟是何方神圣

红黑树到底是何方神圣?

IoT边缘,你究竟是何方神圣?

RecyclerView 是 “何方神圣“?为什么选择它呢?

token 案例,只是测试,功能并不完善(只是看看token 到底是何方神圣)

列式存储?OLAP?ClickHouse究竟是何方神圣