この記事では主に、ベンチマークとしてのフレームワークの内部コンテナとファサードの実装に焦点を当てます。
以前、クラスの自動ロードや設定ファイルのロードのソースコード解析を行ったことがありますが、今回は3回目の記事で、主にコンテナ実装のソースコードを解析します。そしてファサードクラス。そして、この機能を実装するためのいくつかの知識ポイントを学びます。
学習中コンテナとファサードの前に理解する必要がある 2 つの設計パターン、シングルトン モードと登録ツリー モードです。
まずシングルトンモードについて簡単に説明します。
これは、Kaka によって実装された単純なシングルトン モードです。上記の 3 つの機能が一貫しているかどうかを確認してください。
静的変数はインスタンスです
これは構造を持ち、プライベートです
最後の変数は静的メソッド getInstanceです
簡単なテストを行ってみましょう
まだインデックス コントローラーでテスト中です。クラスが 1 回だけインスタンス化されていることを確認するために、4 回呼び出されています。
##このメソッドを参照してください
new-class は 1 回だけ実行されます。これは、作成されたクラスが 1 回だけインスタンス化されることを直接証明しています。Kaka の前に私が抱いた質問は、ここのコンストラクターがプライベート属性を使用する理由です。
こんな質問をしたことはありますか? Kaka がそれに答えます。このクラスでプライベート プロパティを定義するコンストラクター メソッドは、そのクラスが外部でインスタンス化されないようにします。 このクラスが外部でインスタンス化されると、以下に示すエラーが報告されます。では、なぜここでシングルトン モデルについて言及するのでしょうか。これは、
が次の学習コンテナのソース コードで使用されるためです。たとえば、以下のthinkphp/library/think/Container.php クラスには、現在のコンテナを取得します。
ここまで、シングルトン モードについて簡単に説明しましたが、シングルトン モードを理解することは、コンテナについての理解を深めることにもつながります。
学習の継続、ブログの継続、共有の継続は、Kaka が設立以来常に堅持してきた信念です。巨大なインターネット上の Kaka の記事が少しでもお役に立てれば幸いです。カカです、また会いましょう。
以上がThinkPHP コンテナのシングルトン モードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。