后期静态绑定

后期静态绑定

从PHP5.3.0开始,PHP增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类,即在类的继承过程中,使用的类不在是当前类,而是调用的类。后期静态绑定使用关键字static来实现,通过这种机制,“static::”不在被解析为定义当前方法所在的类,而是在实际运行中计算得到的,即为运行时最初调用的类。虽然将其称之为“后期静态绑定”,但它不仅限制于静态方法的调用。下面介绍一个具体的实例。

class A{
    public static function call(){
        echo "class A"."<br>";
    }

    public static function test(){
        self::call();
        static::call();
    }
}

class B extends A{
    public static function call(){
        echo "class B"."<br>";
    }
}

B::test();

通过上述实例可以看出,在调用test()函数时,“self::”是直接调用本类中的方法,而static是根据调用test()函数的类来决定“static::”的值,因此static的值只有在调用时才能确定下来,而self则是在定义时就确定下来的。需要注意的的是,static并不限于静态方法的调用,同样适用于非静态函数的调用,调用的方式同上述静态函数一样,是在调用时动态确定的。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!