最近看到 php 中使用语法如 static::$var ,有点懵,于是百度后发现,static::$var 会强制使用当前调用对象所属类中的变量 $var 的值,还是看下下面的2个例子吧。

class a{
   static protected $test="class a";
   public function static_test(){
     echo static::$test; //class b
     echo self::$test;   //class a
   }
}
class b extends a{
   static protected $test="class b";
}
 
$obj = new b();
$obj->static_test();
class par{
    const v='A';
    public function f1()
    {
        echo static::v;//静态绑定static::
    }
    public function f2()
    {
        echo self::v;
    }
}
class child extends par{
    const v='B';
}
$b=new child();
$b->f1();  //result: 'B'
echo '<br>';
$b->f2();  //result: 'A'