一直搞不清楚,今天百度自己也测试了一下。
<?php class A { public static function closure(){ echo __CLASS__."<br/>"; } public static function call_self(){ static::closure(); } public static function call_static(){ self::closure(); } } class B extends A { public static function closure(){ echo __CLASS__."<br/>"; } } A::call_self();//A A::call_static();//A B::call_self();//A B::call_static();//B
百度是这样说的:
self是类内指针,指针是指向自己的属性,方法。
static是代表使用了A类,如果在子类重写了父类的方法和属性,那么就调用子类的方法和属性