PHP中后期静态绑定的实际例子?

时间:2012-02-14 21:55:07

标签: php late-static-binding

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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(...);
    }
}

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