ホームページ >バックエンド開発 >PHPの問題 >PHPでシングルトンパターンを実装する方法

PHPでシングルトンパターンを実装する方法

王林
王林オリジナル
2020-07-23 15:23:473696ブラウズ

PHP でシングルトン モードを実装する方法: シングルトン モードを実装するには、クラスにインスタンスが 1 つだけあることを確認し、それにアクセスするためのグローバル アクセス ポイントを提供する必要があります。シングルトン パターンはインスタンスのコピーを作成しませんが、シングルトン クラス内に格納されているインスタンスへの参照を返します。

PHPでシングルトンパターンを実装する方法

#シングルトン パターンの定義:


(推奨チュートリアル:

php チュートリアル)

クラスにインスタンスが 1 つだけあることを確認し、そのインスタンスにアクセスするためのグローバル アクセス ポイントを提供します。インスタンスのコピーは作成されませんが、シングルトン クラス内に格納されているインスタンスへの参照を返します。


シングルトン パターンの 3 つの要素:

  • クラスの唯一のインスタンスを保持する静的メンバー変数が必要です。

  • コンストラクターとクローン関数は、外部プログラムがインスタンスを作成したりコピーしたりするのを防ぐために、プライベートとして宣言する必要があります。

  • このインスタンスにアクセスするためのパブリック静的メソッドを提供する必要があります。これにより、一意のインスタンスへの参照が返されます。

コード実装:


class Singleton
{
    //创建静态私有的变量保存该类对象
    static private $instance;

    //防止使用new直接创建对象
    private function __construct(){}

    //防止使用clone克隆对象
    private function __clone(){}

    static public function getInstance()
    {
        //判断$instance是否是Singleton的对象,不是则创建
        if (!self::$instance instanceof self) {
            self::$instance = new self();
        }
        return self::$instance;
    }

    public function test()
    {
        echo "我是一个单例模式";
    }
}

$sing = Singleton::getInstance();
$sing->test();
$sing2 = new Singleton(); //Fatal error: Uncaught Error: Call to private Singleton::__construct() from invalid context in
$sing3 = clone $sing; //Fatal error: Uncaught Error: Call to private Singleton::__clone() from context

以上がPHPでシングルトンパターンを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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