1

我了解后期静态绑定的工作原理,但我似乎想不出何时使用它。PHP 站点上的示例很好,但没有显示任何实际用法。我只是想知道是否有任何示例说明何时绝对需要 LSB 来解决问题,或者何时它有助于简化可能复杂的代码。

4

2 回答 2

0

LSB 在扩展类时很重要。它允许您使用static::来引用被调用类的成员,而self::专门引用它所使用的类。基本上,LSB 允许您覆盖基类中的静态方法。

于 2012-02-14T22:02:01.923 回答
0

它可用于创建静态工厂模式,使用带有静态方法重载的后期静态绑定来防止需要额外的繁琐工厂类,例如:

class MyObject {

    public static function createInstance($typeA = true) {
        if ($typeA) {
            return static::createInstanceA();
        }else{
            return static::createInstanceB();
        }
    }

    protected static function createInstanceA() {
        return new MyObject(...);
    }

    protected static function createInstanceB() {
        return new MyObject(...);
    }
}


class MyObjectDebug extends MyObject {

    protected static function createInstanceA() {
        return new MyObjectDebug(...);
    }
}

如果你喜欢那种东西,当然。

于 2012-02-14T22:10:11.660 回答