php的继承模型中有一个存在已久的问题,那就是在父类中引用扩展类的最终状态比较困难
如下例
class A
{
public static function echoClass()
{
echo __CLASS__;
}
public static function test()
{
self::echoClass();
}
}
class B extends A
{
public static function echoClass()
{
echo __CLASS__;
}
}
B::test(); //输出A
在PHP5.3中加入了一个新特性 延迟静态绑定,就是把本来在定义阶段固定下来的表达式
或变量,改在执行阶段才决定,比如当一个子类继承了父类的静态表达式的时候,它的值并不能被改变,有
时不希望看到这种情况
下面的例子说明了延迟静态绑定的作用
class A
{
public static function echoClass()
{
echo __CLASS__;
}
public static function test()
{
static::echoClass();
}
}
class B extends A
{
public static function echoClass()
{
echo __CLASS__;
}
}
B::test(); //输出B
具体的应用场景 后期完善