/*** PHP デザイン パターン シングルトン モード * $_instance は静的プライベート変数として宣言する必要があります * 外部プログラムが新しい * クラスを作成してシングルトン モードの意味を失うことを防ぐために、コンストラクターとデストラクターはプライベートとして宣言する必要があります * getInstance () メソッドは public に設定する必要があり、インスタンスへの参照を返すにはこのメソッドを呼び出す必要があります*:: 演算子は静的変数と静的関数にのみアクセスできます* 新しいオブジェクトはメモリを消費します*シナリオ: 最も一般的に使用される場所はデータベース接続です。 * シングルトン パターンを使用してオブジェクトを生成した後、* オブジェクトは他の多くのオブジェクトで使用できます。 * @link http://bbs.it-home.org*/ class Danli { //クラスインスタンスを保存する静的メンバー変数 private static $ _instance; //プライベートタグの構築メソッド private function __construct(){ echo 'This is a Constructed Method;'; } //オブジェクトのコピーやクローン作成を防ぐための__cloneメソッドを作成 public function __clone (){ trigger_error('クローンは許可されていません!',E_USER_ERROR); } //単一インスタンス メソッド、インスタンスにアクセスするために使用されるパブリック静的メソッド public static function getInstance( ){ if(!(self::$_instance instanceof self)){ self::$_instance = 新しい self; } return self::$_instance; }< /p> public function test(){ echo 'メソッドの呼び出しに成功しました'; } } // new を使用してプライベート マーク コンストラクターをインスタンス化するクラスはレポートしますエラー // $danli = new Danli(); //正しい方法は、二重コロン::演算子を使用して静的メソッドにアクセスし、インスタンスを取得することです $danli = Danli::getInstance(); $ danli->test(); // オブジェクトをコピー (クローン作成) すると E_USER_ERROR が発生します $danli_clone = clone $danli ?> コードをコピー