2

次のシングルトン クラスの例を考えてみましょう。

class Model_Acl
{
    protected static $_instance;

    private function __construct($a) {
        echo $a;
    }

    public static function getInstance()
    {
        if(!isset(self::$_instance)) {
            self::$_instance = new Model_Acl('hello world');
        }
        return self::$_instance;
    }
}

同じクラスの静的メソッドで、コンストラクターがプライベートなクラスを初期化できます。クラス内でオブジェクトをインスタンス化しようとすると、クラスの初期化のスコープがローカルになるということですか?

アクセス修飾子を参照してクラスのインスタンス化に関する PHP の動作を誰かが説明できれば幸いです。

4

1 に答える 1

4

Model_Acl::getinstance() を介してのみ初期化できます。

しかし、はい、うまくいきます。

シングルトンは良いプラクティスとは見なされません。依存性注入を検討する必要があります。

http://fabien.potencier.org/article/11/what-is-dependency-injection .

PHPシングルトンの詳細

PHP シングルトン クラスのベスト プラクティス

于 2013-02-05T06:18:30.183 に答える