php的延迟静态绑定

来源:互联网 发布:其孰能讥之乎 其的意思 编辑:程序博客网 时间:2024/05/16 12:15

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


具体的应用场景 后期完善