self::
代表当前类,可访问类内静态属性、静态方法、非静态方法和常量。但不能访问非静态属性
访问方式:self::[静态属性|静态方法|非静态方法|常量],如self::$a (self不带$,变量带$)
this
代表当前类对象,不可访问类内静态属性、静态方法和常量。
访问方式:$this->[变量|方法],如$this->a (this带$,变量不带$)
static::
与self::相比,self::代表调用的方法是对象被实现的类(子类),而static::调用的是基类(父类)
<?php
class Person{
public static function name(){
echo '父类'.'<br>';
}
public static function callself(){
self::name();
}
public static function callstatic(){
static::name();
}
}
class Man extends Person{
public static function name(){
echo '子类'.'<br>';
}
}
Man::callself(); // 父类
Man::callstatic(); // 子类