源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

PHP面向对象之后期静态绑定功能介绍

  • 时间:2022-07-11 08:19 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP面向对象之后期静态绑定功能介绍
本文将对PHP后期静态绑定功能进行介绍,[b]它主要用于解决在继承范围内引用静态调用的类[/b]。 首先来看下面这个例子:
[u]复制代码[/u] 代码如下:
class Person {       public static function status()     {         self::getStatus();     }       protected static function getStatus()     {         echo "Person is alive";     }   }   class Deceased extends Person {       protected static function getStatus()     {         echo "Person is deceased";     }   }   Deceased::status(); //Person is alive
很明显,结果不是我们预期的,这是因为self::取决于定义时所在的类,而不是运行中的类。为了解决这个问题,你可能会在继承类中重写status()方法,更好的解决方案是PHP 5.3后添加了后期静态绑定的功能。
[u]复制代码[/u] 代码如下:
class Person {       public static function status()     {         static::getStatus();     }       protected static function getStatus()     {         echo "Person is alive";     }   }   class Deceased extends Person {       protected static function getStatus()     {         echo "Person is deceased";     }   }   Deceased::status(); //Person is deceased
可见,static::不在指向当前所在的类,实际上,它是在运行中计算的,强制获取最终类的所有属性。 [b]因此,建议,以后不要再使用self::,使用static::[/b]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部