PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类,这个是php官方的解释,即在类的继承过程中,使用的类不再是当前类,而是调用类。
后期静态绑定使用关键字static来实现,通过这种机制,“static::”不在解析为定义当前方法所在的类,而是在实际运行时计算得到的,即运行时最初调用的类。
虽然将其称之为“后期静态绑定”,但它不仅限制于静态方法的调用。
1 class A{ 2 public static function call(){ 3 echo "class A<br/>"; 4 } 5 public static function test(){ 6 self::call(); 7 static::call(); 8 } 9 } 10 class B extends A{ 11 public static function call(){ 12 echo "class B"; 13 } 14 } 15 16 echo (B::test()); 17 //输出结果: 18 //class A 19 //class B