static我先这样理解:static只获取基类的定义的值,self:之后去基类自身的值 //完全错误?,换种思维
说明:
self:类内指针,就是写在哪个类里边,就调用哪个类里边的方法或属性。
static:使用的这个类会被子类覆盖,使用的是子类的方法或属性,就是说父类访问的是子类的方法或属性。
//自己理解下:self-在哪个类中使用就是访问哪个类中的属性/方法。static-会被子类覆盖,比如说b子类调用A父类,虽然说static在A父类中写的,但是调用的属性/方法还是b子类的
例子:
class a{ public static function who(){ echo "my name is xiaofeng"; } public static function name(){ self::who(); }}class b extends a{ public static function who(){ echo "my name is xiaoma"; } public static function name(){ static::who(); }}a::name();b::name();输出:a、my name is xiaofengb、my name is xiaoma