1. シングルトン パターンの起源
クラス
は、現実の世界で共通の特性を持つもののクラスを抽象化したものです。クラスのインスタンス化を通じて、多くのオブジェクトが生成されますが、同時に多くのリソースも消費します ( データベース
に接続するときの接続数の制限など)。 、コンピューター上で リソース マネージャーを開く
には一意性があります)、その結果、クラスのインスタンス化を制限する必要もありました。リソースの一意性を保護するために、シングル ケース モード
うまれた。
2. シングルトン パターンの定義
定義: シングルトン パターンは、クラス設計で最大 1 つのオブジェクトのみが生成されるという設計思想です。
3. シングルトン モードのインスタンス
a. 空のクラスを作成します。
b. クラスを複数回インスタンス化できることが、複数のオブジェクトが生成される理由であるため、 コンストラクター メソッド をプライベート化できます。
<?php class Use{ } $a=new Use();//实例化一个对象 ?>c. Privatization
Constructor メソッド は生成されるインスタンス化されたオブジェクトの数を 0 にし、クラス内の
static メソッドを通じてコンストラクター メソッドを呼び出せるようにします。その後、コンストラクターを外部に返します。
<?php class Use{ private function __construct() { echo __FUNCTION__."<br>"; } } ?>d. 上記のメソッドでオブジェクトをインスタンス化できますが、コンストラクター メソッドの使用権も解放されます。このメソッドが 1 つのオブジェクトだけを返すようにする場合は、生成されたオブジェクトをクラス内に格納する方法があることを確認する必要があります。新しいオブジェクトが最初に生成され、古いオブジェクトが後で返されます。この場合、静的プロパティを使用する必要があります。
<?php class Use{ private function __construct() { echo __FUNCTION__."<br>"; } public static function getInstance() { return new self(); } } $s1=Use::getSingleton(); ?>e. 現時点では、
static メソッド を呼び出すことで
object が 1 つだけ取得されることが保証されます。ただし、
clone を通じて新しいオブジェクトをインスタンス化することはできるため、
clone をプライベート化できます。
<?php class Use{ private static $object = NULL;//初始化为NULL,没有对象 private function __construct() { echo __FUNCTION__."<br>"; } public static function getInstance() { //判断类内部的静态属性是否存在对象 if(!(self::$object instanceof self)){ //当前保存的内容不是当前类的对象 self::$object = new self(); } //返回对象给外部 return self::$object; } } $s1=Use::getSingleton(); ?>
以上がPHPのシングルトンパターンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。