Loading

php 延迟静态绑定

延迟静态绑定 (Late Static Binding)是PHP5.3引入的一个功能,用于解决类继承中静态方法调用的问题。它允许在类继承的上下文中正确引用被覆写的方法或属,同时支持静态环境。通过静态(static):关键字,PHP可以在运行时决定调用的是哪一个类的方法或属性,而不是在编译时就确定。

例如:

class ParentClass
{
    public static function getClassName()
    {
        return static::class;
    }

}

class ChildClass extends ParentClass
{
}

echo ChildClass::getClassName();//输出 "ChildClass"

在这个例子中,调用ChildClass::getClassName()会返回ChildClass,这是因为使用了static::关键字进行静态绑定。如果改用 self::关键字,则会返回 ParentClass,因为self::是在编译时绑定的。

与self::的区别:

class Base
{
    public static function who()
    {
        echo '爸爸';
    }

    public static function test()
    {
        self::who();//父类自己的
        static::who();//子类的
    }
}

class Child extends Base
{
    public static function who()
    {
        echo '儿子';
    }
}

Child::test();//输出 "爸爸儿子"

延迟静态绑定灵活性、扩展性比较高,通过不修改父类的情况下,通过子类实现不用的行为。

posted @ 2025-05-29 09:54  Carvers  阅读(27)  评论(0)    收藏  举报