【问题标题】:Practical examples of late static binding in PHP? [closed]PHP中后期静态绑定的实际例子? [关闭]
【发布时间】:2012-02-14 21:55:07
【问题描述】:

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

【问题讨论】:

    标签: php late-static-binding


    【解决方案1】:

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

    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(...);
        }
    }
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-21
        • 1970-01-01
        • 2019-01-16
        • 1970-01-01
        • 1970-01-01
        • 2014-06-30
        • 1970-01-01
        相关资源
        最近更新 更多