<?php
namespace Auryn;
class CachingReflector implements Reflector
{
const CACHE_KEY_CLASSES = 'auryn.refls.classes.';
const CACHE_KEY_CTORS = 'auryn.refls.ctors.';
const CACHE_KEY_CTOR_PARAMS = 'auryn.refls.ctor-params.';
const CACHE_KEY_FUNCS = 'auryn.refls.funcs.';
const CACHE_KEY_METHODS = 'auryn.refls.methods.';
private $reflector;
private $cache;
public function __construct(Reflector $reflector = null, ReflectionCache $cache = null)
{
$this->reflector = $reflector ?: new StandardReflector;
$this->cache = $cache ?: new ReflectionCacheArray;
}
public function getClass($class)
{
$cacheKey = self::CACHE_KEY_CLASSES . strtolower($class);
if (!$reflectionClass = $this->cache->fetch($cacheKey)) {
$reflectionClass = new \ReflectionClass($class);
$this->cache->store($cacheKey, $reflectionClass);
}
return $reflectionClass;
}私たちの考えは、アプリケーションが Foo クラスを使用するとき、Foo クラスを作成し、Foo クラスのメソッドを呼び出すことです。このメソッドが Bar クラスを必要とする場合、Bar クラスを作成し、Bar クラスを呼び出します。このメソッドには Bim クラスが必要であり、Bim クラスを作成してから他の作業を実行します。依存関係注入を使用する考え方は、アプリケーションが Foo クラスを使用し、Foo クラスには Bar クラスが必要で、Bar クラスには Bim クラスが必要です。次に、最初に Bim クラスを作成し、次に Bar クラスを作成して Bim を注入します。次に、 Foo クラスを作成し、 Bar クラスを挿入して、 Foo メソッドを呼び出し、 Foo が Bar メソッドを呼び出し、その後、他の作業を実行します。これは制御の反転パターンです。依存関係の制御は、呼び出しチェーンの先頭まで逆に行われます。このようにして、依存関係を完全に制御し、注入されたさまざまなオブジェクトを調整することでプログラムの動作を制御できます。たとえば、Foo クラスは memcache を使用しますが、Foo クラスのコードを変更せずに代わりに redis を使用できます。
依存関係注入コンテナーの使用の背後にある考え方は、アプリケーションが Foo クラスを取得する必要がある場合、コンテナーから Foo クラスを取得し、コンテナーが Bim クラスを作成し、次に Bar クラスを作成して Bim を注入するというものです。次に、Foo クラスを作成し、それを Bim クラスに注入します。Bar インジェクション、アプリケーションは Foo メソッドを呼び出し、Foo は Bar メソッドを呼び出し、その後、他の作業を行います。つまり、コンテナはインスタンス化、依存関係の注入、依存関係の処理など。
このサイトのすべてのリソースはネチズンによって提供されたもの、または主要なダウンロード サイトによって転載されたものです。ソフトウェアの整合性をご自身で確認してください。このサイトのすべてのリソースは学習の参考のみを目的としています。商業目的で使用しないでください。そうでない場合は、すべての結果に対して責任を負うことになります。侵害がある場合は、削除するためにご連絡ください。連絡先情報: admin@php.cn
Laravelコントローラーで依存関係注入を使用する方法
09 Nov 2025
Laravel は、コントローラー内のタイプヒントの依存関係を自動的に解決することで、依存関係の挿入を簡素化します。依存関係の挿入により、クラスが依存関係を外部に保存できるようになり、テスト容易性とコードの保守性が向上します。たとえば、ユーザー サービスを直接挿入できます。
図書館管理プログラム (3)
13 Jun 2016
図書館管理プログラム (3)。書籍のクエリ部分: ? if(!$UploadAction): ? //このプログラムは書籍のタイトル、著者、出版社の情報を出力するように設計されています。 //編集者:孔秀祥。日付: 2001/3/25? HTMLHEAD TITLE 書誌クエリ
緊急の隠しパスに関する問題
13 Jun 2016
緊急! ! !隠しパスの問題の例を見てみましょう http://wenku.baidu.com/view/a4cee123de80d4d8d15a4fba.html 1. これは百度図書館のアドレスです。a4cee123de80d4d8d15a4fba がどうやって出てきたのか知りたいです。 2. レビュー要素 - ダウンロード ボタン、<a class="ic Reader-download
Outlook でメールとフォルダーを並べ替える方法
08 Nov 2025
このガイドでは、Outlook メールを送信者、色、既読ステータスごとに整理し、ワークフローに合わせてフォルダー レイアウトをカスタマイズする方法を説明します。乱雑な受信トレイに対処するのは、整理されていない図書館で 1 冊の本を見つけるのと同じくらい難しい場合があります。
Yandex公式ウェブサイト(ログインポータル)_Yandexメール公式ウェブサイトのログインポータルとアクセスアドレス
09 Nov 2025
Yandex公式Webサイトのログイン入り口はhttps://yandex.com/です。ユーザーは、ホームページ右上の「ログイン」からアクセスできます。電子メールまたは携帯電話番号によるログインをサポートしており、検索エンジン、電子メール、地図、クラウド ストレージ、その他の統合サービスにアクセスできます。
JPA が Spring Boot で Join テーブルをクエリするときに発生する依存関係注入の失敗の問題を解決する
08 Nov 2025
この記事は、開発者が Spring Data JPA を使用して結合テーブルをクエリするときに発生する UnsatisfiedDependencyException を解決できるようにすることを目的としています。エラー メッセージ、コード例、および解決策を分析することにより、JPQL クエリ ステートメントを正しく構築し、DTO クラスのコンストラクターがクエリ結果と一致することを確認して、依存関係注入の失敗の問題を回避する方法を説明します。
ホットツール Tags
人気のツール
50 個の優れた古典的な PHP アルゴリズムのコレクション
古典的な PHP アルゴリズム、優れたアイデアを学び、思考を広げます
画像を最適化するための小さな PHP ライブラリ
画像を最適化するための小さな PHP ライブラリ
勝率アルゴリズム用の PHP 関数クラス
勝率アルゴリズム用の PHP 関数クラス



