最近因为工作的原因没有什么时间自己学习一些新的东西,那就翻翻之前买的书,看看之前看过忘记的知识点温习一下,刚好看到一个知识点在学习一下,php的后期静态绑定
PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类,这个是php官方的解释,即在类的继承过程中,使用的类不再是当前类,而是调用类。后期静态绑定使用关键字static来实现,通过这种机制,“static::”不在解析为定义当前方法所在的类,而是在实际运行时计算得到的,即运行时最初调用的类。虽然将其称之为“后期静态绑定”,但它不仅限制于静态方法的调用
请看下面的实例

  1. <?php
  2. class A{
  3. public static function call(){
  4. echo "class A<br/>";
  5. }
  6. public static function test(){
  7. self::call();
  8. static::call();
  9. }
  10. }
  11. class B extends A{
  12. public static function call(){
  13. echo "class B";
  14. }
  15. }
  16. B::test();

输出结果:

  1. class A
  2. class B

通过上面的代码可以看到,在调test方法的时候,“self::”是直接调用本类的方法,static 是根据调用test方法的类来决定的“static::”的值,因此static的值只有在调用时才能确定下来,而self则是在定义是就确定下来。需要注意的是static并不限于静态方法

相关评论(0)
您是不是忘了说点什么?

友情提示:垃圾评论一律封号...

还没有评论,快来抢沙发吧!