まず最も単純なシングルトン パターンの実装を見てみましょう:
リーリー
しかし、ユーザーは new キーワードを通じて新しいオブジェクトをインスタンス化できるため、このように記述するだけでは、厳密な意味では真のシングルトン パターンではありません。
リーリー 実行結果は次のとおりです。
そこで、コードに少し改良を加えて、コンストラクターのアクセス レベルを protected に設定します。
リーリー
もちろん、狡猾なユーザーは clone キーワードを使用して新しいオブジェクトのクローンを作成できます:
リーリー
したがって、 __clone メソッドを保護されたものとして宣言する必要もあります。
リーリー
したがって、厳密な意味でシングルトン パターンを実装するには、次の点に注意する必要があります:
1. コンストラクターを保護として宣言します。
2. getInstance の静的メソッドを作成して、クラスを保存する静的変数を取得します。3. __clone メソッドを保護として宣言します
もちろん、実際の開発では、ほとんどの場合、単純なシングルトン パターン (最初の例の書き方) を実装するだけで十分です。
http://www.bkjia.com/PHPjc/1040917.html