PHPパターン:シングルトン

シングルトン



はじめに



シングルトンは、理解が最も簡単なテンプレートの1つです。 主な目的は、クラスのインスタンスが1つだけ存在することを保証することです。 通常、その理由は次のとおりです。ソースクラスのオブジェクトは1つだけ必要であり、アプリケーション内のどこからでもオブジェクトにアクセスできる必要があります。 グローバルアクセス。



例は、設定を保存するためのクラスです。 設定クラスは、データが変更されないため(設定を変更する唯一の方法は設定ファイルを編集することです)、アプリケーションのさまざまな部分でよく使用されるため、Singletonテンプレートの良い例です。 さらに、必要に応じてSettingsクラスの新しいオブジェクトを作成するにはリソースが必要です。 オブジェクトは同一になります。



定義



シングルトンテンプレートは、クラスのインスタンスを作成するための静的メソッドを想定しており、アクセスすると元のオブジェクトへの参照が返されます。



PHP5の例



PHP5の例(Settingsクラスの特定のメソッドを実装せずに)

class Settings {

private $settings = array();

private static $_instance = null;

private function __construct() {

// getInstance ()

}

protected function __clone() {

//

}

static public function getInstance() {

if(is_null(self::$_instance))

{

self::$_instance = new self();

}

return self::$_instance;

}

public function import() {

// ...

}

public function get() {

// ...

}

}









シングルトンテンプレートの実装



シングルトンテンプレートを実装する鍵は、その外部で実行されたときに変数が変更されない静的変数です。 これにより、静的メソッドSettings :: getInstance()の呼び出し間でオブジェクトを元の状態に保ち、メソッドが呼び出されるたびにオブジェクトへのリンクを返すことができます。

コンストラクタは通常プライベートであることに注意してください。 常に1つのSettingsオブジェクトのみが使用されるようにするには、コンストラクターへのアクセスを制限して、新しいオブジェクトを作成しようとしたときにエラーが発生するようにする必要があります。 また、これらの制限はPHP4では不可能であることに注意してください。



All Articles