PHP面向对象之后期静态绑定功能介绍
2015-05-18 00:00
736 查看
本文将对PHP后期静态绑定功能进行介绍,它主要用于解决在继承范围内引用静态调用的类。
首先来看下面这个例子:
很明显,结果不是我们预期的,这是因为self::取决于定义时所在的类,而不是运行中的类。为了解决这个问题,你可能会在继承类中重写status()方法,更好的解决方案是PHP 5.3后添加了后期静态绑定的功能。
可见,static::不在指向当前所在的类,实际上,它是在运行中计算的,强制获取最终类的所有属性。
因此,建议,以后不要再使用self::,使用static::
首先来看下面这个例子:
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后添加了后期静态绑定的功能。
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::不在指向当前所在的类,实际上,它是在运行中计算的,强制获取最终类的所有属性。
因此,建议,以后不要再使用self::,使用static::
相关文章推荐
- PHP面向对象之后期静态绑定功能介绍
- PHP后期静态绑定的功能
- PHP后期静态绑定的功能
- PHP 延迟静态绑定 功能 static
- php--面向对象--类的静态成员
- 关于PHP核心功能详细介绍
- 使用WampServer搭建本地PHP环境,绑定域名,配置伪静态
- PHP 5.3 后期静态绑定 理解及测试
- PHP面向对象 实例化 构造函数 封装 继承 静态
- PHP的延迟静态绑定--static
- PHP静态延迟绑定和普通静态效率简单对比
- 基于php伪静态的实现详细介绍
- PHP面向对象 实例化 构造函数 封装 继承 静态
- php Apache配置伪静态的介绍
- PHP静态延迟绑定:static
- php中静态绑定
- PHP静态延迟绑定和普通静态效率的对比
- [转]PHP V5.3 用延后静态绑定搞活面向对象编程
- 关于php面向对象动态绑定和静态绑定的理解
- PHP延迟静态绑定