検索
  • サインイン
  • サインアップ
パスワードのリセットが成功しました

興味のあるプロジェクトをフォローし、それらに関する最新ニュースをチェックしてください

ホームページ PHP ライブラリ その他の図書館 依存関係注入コンテナー用の PHP ライブラリ
依存関係注入コンテナー用の PHP ライブラリ
<?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

PHP での依存関係注入のガイド PHP での依存関係注入のガイド

14 Nov 2025

依存関係の挿入は、内部的に依存関係を作成するのではなく、クラスの外部から依存関係を渡すことによって、コードの保守性、テスト容易性、および柔軟性を向上させます。

PHP サービス クラスの依存関係管理: 静的メソッドと依存関係注入の分析 PHP サービス クラスの依存関係管理: 静的メソッドと依存関係注入の分析

26 Nov 2025

このチュートリアルでは、PHP でコンストラクターの依存関係を持つクラスをインスタンス化する際の一般的な問題とその解決策について詳しく説明します。サービス クラス (EmailService など) のコンストラクターに特定の依存関係が必要な場合、 new Class() を直接試行すると、「引数が少なすぎます」エラーが発生します。この記事では、2 つの主要なソリューション戦略について詳しく説明します。1 つは静的メソッドを使用してインスタンスの状態に依存しない操作を処理する方法、もう 1 つはサービス インスタンスを依存関係注入 (DI) コンテナー経由で、またはメソッド パラメーターとして直接渡して、コードの柔軟性、テスト容易性、優れたアーキテクチャを確保する方法です。

PHP で単純な依存関係注入コンテナーを構築する方法 PHP で単純な依存関係注入コンテナーを構築する方法

02 Dec 2025

その答えは、バインディング、依存関係およびシングルトンの解析をサポートし、リフレクションを通じてオブジェクトとその依存関係を自動的にインスタンス化し、疎結合とテスト容易性を実現する PHP クラスを作成することです。 1. Container クラスを定義し、バインディングを保存します。 2. ReflectionClass を使用してコンストラクターのパラメーターの型を取得します。 3. make メソッドを再帰的に呼び出して、各依存関係を解決します。 4. クロージャモードとシングルトンモードをサポートします。 5. インスタンス化中に依存オブジェクトを自動的に挿入します。

Java での乱数依存関係のテスト: 依存関係注入に DoubleSupplier を使用する Java での乱数依存関係のテスト: 依存関係注入に DoubleSupplier を使用する

11 Feb 2026

この記事は、Java で Mockito を使用して java.util.Random.nextDouble() メソッドに依存するコードをテストするときに遭遇する課題に対処することを目的としています。 Random クラスを直接シミュレートすると問題が発生する可能性があるため、この記事では依存関係の注入を通じて DoubleSupplier インターフェイスを導入する解決策を提案します。メソッドをオーバーロードし、制御可能な乱数ソースを注入することにより、乱数生成ロジックに依存するコードを効果的に分離してテストできるため、テストの信頼性とコードの保守性が向上します。

Composer を使用して PHP-DI のような依存関係注入コンテナーを実装する方法 Composer を使用して PHP-DI のような依存関係注入コンテナーを実装する方法

17 Dec 2025

まず、PHP-DI ライブラリをインストールして自動読み込みを構成し、次にコンテナ インスタンスを作成し、自動アセンブリと型ヒントを使用して依存関係を自動的に解決し、オーバーライドを定義してカスタム インジェクションを実装し、最後にコンテナをアプリケーションに統合してサービス オブジェクトの作成と依存関係インジェクションを管理します。

Spring を使用した Java での依存関係注入のクイック ガイド。 Spring を使用した Java での依存関係注入のクイック ガイド。

28 Jan 2026

Spring の依存関係の注入には、明確なバインディングのタイミング、スコープ、循環参照処理が必要です。 @Autowired が null になるのは、主にオブジェクトがコンテナによって管理されていないためです。依存関係が空でないことを確認し、テスト容易性を向上させるために、コンストラクター インジェクションをお勧めします。

もっと見る