ホームページ >バックエンド開発 >PHPチュートリアル >PHP5 でシングルトン設計パターンを実装するにはどうすればよいですか?

PHP5 でシングルトン設計パターンを実装するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-13 03:08:08615ブラウズ

How to Implement the Singleton Design Pattern in PHP5?

PHP5 のシングルトン デザイン パターン

PHP5 でシングルトン デザイン パターンを実装するには、方法に関係なく、インスタンスを 1 つだけ持つことができるクラスを作成する必要があります。何度もインスタンス化されます。これは、静的変数を使用して単一インスタンスを保存し、クローン作成や逆シリアル化を防ぐことで実現されます。

PHP5 でシングルトン クラスを作成する方法の例を次に示します。

final class UserFactory
{
    private static $inst = null;

    // Prevent cloning and de-serializing
    private function __clone(){}
    private function __wakeup(){}

    /**
     * Call this method to get singleton
     *
     * @return UserFactory
     */
    public static function Instance()
    {
        if self::$inst === null) {
            self::$inst = new UserFactory();
        }
        return self::$inst;
    }

    /**
     * Private ctor so nobody else can instantiate it
     *
     */
    private function __construct()
    {

    }
}

これこの実装では、静的変数 $inst を使用して UserFactory クラスの単一インスタンスを格納します。 Instance() メソッドはシングルトン ゲッターとして機能します。 $inst が null の場合、新しいインスタンスが作成され、$inst に割り当てられます。

この Singleton クラスを使用するには、単に Instance() メソッドを呼び出して単一のインスタンスを取得します。

$fact = UserFactory::Instance();
$fact2 = UserFactory::Instance();

$fact と $fact2 を比較すると true が返され、それらが同じインスタンスであることが確認されます。

ただし、新しいインスタンスを作成しようとすると、 UserFactory オブジェクトで new UserFactory() を直接使用すると、コンストラクターがプライベートになっているため、エラーがスローされます。 UserFactory クラスのインスタンスを取得する唯一の方法は、Instance() メソッドを使用することです。

以上がPHP5 でシングルトン設計パターンを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。