ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP コンテナのシングルトン モード

ThinkPHP コンテナのシングルトン モード

咔咔
咔咔オリジナル
2020-10-10 11:21:592612ブラウズ

この記事では主に、ベンチマークとしてのフレームワークの内部コンテナとファサードの実装に焦点を当てます。

序文

以前、クラスの自動ロードや設定ファイルのロードのソースコード解析を行ったことがありますが、今回は3回目の記事で、主にコンテナ実装のソースコードを解析します。そしてファサードクラス。そして、この機能を実装するためのいくつかの知識ポイントを学びます。

1. シングルトンモード

学習中コンテナとファサードの前に理解する必要がある 2 つの設計パターン、シングルトン モードと登録ツリー モードです。

まずシングルトンモードについて簡単に説明します。

  • コンストラクターがあり、属性はプライベートです
  • クラスのインスタンスを保存する静的メンバー変数があります
  • このインスタンスにアクセスするための静的メソッドを用意する

これは、Kaka によって実装された単純なシングルトン モードです。上記の 3 つの機能が一貫しているかどうかを確認してください。

静的変数はインスタンスです

これは構造を持ち、プライベートです

最後の変数は静的メソッド getInstanceです

ThinkPHP コンテナのシングルトン モード簡単なテストを行ってみましょう

まだインデックス コントローラーでテスト中です。クラスが 1 回だけインスタンス化されていることを確認するために、4 回呼び出されています。

##このメソッドを参照してくださいThinkPHP コンテナのシングルトン モード

new-class は 1 回だけ実行されます。これは、作成されたクラスが 1 回だけインスタンス化されることを直接証明しています。

Kaka の前に私が抱いた質問は、ここのコンストラクターがプライベート属性を使用する理由です。 ThinkPHP コンテナのシングルトン モード

こんな質問をしたことはありますか? Kaka がそれに答えます。

このクラスでプライベート プロパティを定義するコンストラクター メソッドは、そのクラスが外部でインスタンス化されないようにします。

このクラスが外部でインスタンス化されると、以下に示すエラーが報告されます。

では、なぜここでシングルトン モデルについて言及するのでしょうか。これは、ThinkPHP コンテナのシングルトン モード

が次の学習コンテナのソース コードで使用されるためです。たとえば、以下の

thinkphp/library/think/Container.php クラスには、現在のコンテナを取得します。

ここまで、シングルトン モードについて簡単に説明しましたが、シングルトン モードを理解することは、コンテナについての理解を深めることにもつながります。 ThinkPHP コンテナのシングルトン モード

学習の継続、ブログの継続、共有の継続は、Kaka が設立以来常に堅持してきた信念です。巨大なインターネット上の Kaka の記事が少しでもお役に立てれば幸いです。カカです、また会いましょう。

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

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