1

静的バインディングがどのように機能するかは理解していますが、それを使用する時期が思いつかないようです。PHPサイトの例は素晴らしいですが、現実的な使用法は示されていません。問題を解決するためにLSBが絶対に必要な場合、または潜在的に複雑なコードを単純化するのに役立つ場合の例があるかどうか疑問に思っています。

4

2 に答える 2

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 に答える
0

クラスを拡張する場合、LSB は重要です。呼び出されたクラスstatic::のメンバーを参照するために使用できますが、使用されているクラスを具体的に参照できます。基本的に、LSB を使用すると、基本クラスの静的メソッドをオーバーライドできます。self::

于 2012-02-14T22:02:01.923 に答える