php的类里面$this , self , static都可以指向当前类;如
//$this只能用于指向非静态成员
class Demo{
public $a = 1;
public function setA(){
$this->a = 2;
}
}
//static和self则是指向静态成员
class DemoForStatic{
public static __construct(){
static::say();
}
public static say(){
echo 1;
}
}
class DemoForSelf{
public static __construct(){
self::say();
}
public static say(){
echo 1;
}
}
class A extends DemoForStatic{
public static say(){
echo 10086;
}
}
class B extends DemoForSelf{
public static say(){
echo 10086;
}
}
$a = new A();
$b = new B();
最终结果输出结果为 10086 和 1;
self调用的是声明时所指向的类 也就是父类的方法
static又叫做延迟静态绑定 调用的是最终实例化时所指向的类;