我理解静态绑定的工作时间有多晚,但我似乎无法想出一个使用它的时间。 PHP站点上的示例很好,但不显示任何实际用法。我只是想知道是否有任何LSB绝对需要解决问题的例子,或者它有助于简化可能复杂的代码。
答案 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(...);
}
}
如果你喜欢那种东西,当然。