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 
原文地址:https://www.cnblogs.com/yinguohai/p/10935811.html