ThinkPHP6 でのシングルトン モードの使用

PHPz
リリース: 2023-06-21 09:21:21
オリジナル
1320 人が閲覧しました

ThinkPHP6 でのシングルトン モードの使用

シングルトン モードは一般的な設計パターンであり、クラスにインスタンスが 1 つだけ存在し、グローバル アクセス ポイントを提供するようにします。 ThinkPHP6 では、シングルトン モードを使用して、グローバル変数や共有リソースなどを簡単に管理できます。

以下は、ThinkPHP6 でのシングルトン モードの使用例です。

  1. クラスの作成

最初に、デモ用の単純なクラスを作成します。シングルトンパターンを使用します。以下に示すように、このクラスにはプロパティとメソッドが 1 つだけあります。

namespace apputil;

class Singleton
{
    private static $instance = null;
    private $count = 0;

    private function __construct() {}
 
    public static function getInstance()
    {
        if (self::$instance == null) {
            self::$instance = new Singleton();
        }

        return self::$instance;
    }

    public function getCount()
    {
        return $this->count;
    }

    public function incrementCount()
    {
        $this->count++;
    }
}
ログイン後にコピー
  1. シングルトン インスタンスの取得

ThinkPHP6 では、コンテナによって提供されるシングルトン インスタンス メソッド make を使用してシングルトン インスタンスを取得できます。 make メソッドを使用する場合、インスタンス名を指定することも、デフォルトのインスタンス名を使用することもできます。以下は、Singleton クラスのシングルトン インスタンスを取得するものです:

$singleton = app()->make('apputilSingleton::getInstance');
ログイン後にコピー

ご覧のとおり、ここではインスタンスとして Singleton::getInstance を渡す必要があります。名前。

  1. シングルトン インスタンスの使用

上で取得した $singleton 変数を使用して、Singleton クラスのプロパティにアクセスできます。と方法。以下はサンプル コードです:

$singleton->incrementCount();
echo $singleton->getCount(); // 输出 1
 
$anotherSingleton = app()->make('apputilSingleton::getInstance');
echo $anotherSingleton->getCount(); // 输出 1
ログイン後にコピー

ご覧のとおり、シングルトン インスタンスを一度作成するだけで、どこでも使用でき、取得されるインスタンスは同じです。

注:

  • シングルトン クラスでは、コンストラクターはプライベートである必要があります。
  • シングルトン モードを使用する場合は、スレッドの安全性の問題に注意してください。
  • ThinkPHP6 では、make メソッドを使用してシングルトン インスタンスを取得する場合、コンテナー キャッシュの競合を避けるために、完全な名前空間とインスタンス名を使用することをお勧めします。

概要:

ThinkPHP6 でシングルトン モードを使用すると、グローバル状態と共有リソースを簡単に管理できます。コンテナーによって提供される make メソッドを通じて、次のことができます。 easy シングルトンインスタンスを簡単に取得します。ただし、スレッドの安全性の問題に注意し、完全な名前空間とインスタンス名を使用してください。

以上がThinkPHP6 でのシングルトン モードの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート