この記事では、PHP に関する関連知識を提供します。主に依存性注入に関する関連問題を紹介します。依存性注入 DI は、実際にはコンストラクターを介したクラスへの依存関係を指します。自動注入、見てみましょう, 皆様のお役に立てれば幸いです。
(推奨チュートリアル: PHP ビデオ チュートリアル)
依存性注入 DI実際、これは基本的に、クラスへの依存関係がコンストラクターを通じて自動的に挿入されることを意味します。
平たく言えば、現在クラスを操作しているが、このクラスの一部のメソッドまたは関数は、このクラスでは完了できないことを意味します。このクラスだけで実行できますが、別のクラスの助けを借りてのみ実現できます。
最も直接的な兆候は、パラメーター データがオブジェクトとして渡される場合です。厳密に言えば、あるクラスを別のクラスで操作したい場合、二つのクラスの間には相互依存関係があり、パラメータを渡す方法をインジェクションと呼びます
依存関係の注入は使用されません。PHP があるクラスで別のクラスを使用する必要がある場合、多くの場合、次の操作が実行されます。
たとえば、コンテナ クラスでアダプター クラスを使用する必要がある場合、これを行う必要があります。インスタンス化
多数の外部クラスを使用する必要がある場合、結合度が高くなりすぎて、後のメンテナンスが容易に困難になる可能性があります。
素人向けに外部クラスが機能するようになりますが、これは結合度が高すぎると呼ばれます
<?php class container { private $adapter; public function __construct() { $this->adapter = new adapter(); } }
上記のコードは結合度が高すぎます。主に結合を理解するために、依存関係の挿入が出現します
次の場合、操作する必要があるクラス オブジェクトを渡すだけで済みます。
依存関係のパラメーターインジェクション操作はオブジェクトであり、通常のパラメータではありません。理解は深まりましたか?
しかし、このような単純な依存性インジェクションでは、多くのクラスに依存している場合、パラメータとパラメータを渡すのに長い時間がかかります。混乱しやすいでしょう
<?php class container { private $adapter; public function __construct(adapter $adapter) { $this->adapter = $adapter; } }
上記のパラメータの混乱の問題を解決するために、現時点では依存性注入が最適化されています。
魔法のメソッドを使用して、__get でオブジェクトを設定します。
#現時点で、依存関係が多すぎてパラメーターがわかりにくいという問題は解決できます。問題<?php class container { public $instance = []; public function __set($name, $value) { $this->instance[$name] = $value; } } $container = new container(); $container->adapter = new adapter(); $container->autofelix = new autofelix();
<?php class container { public $instance = []; public function __set($name, $value) { $this->instance[$name] = $value; } } class adapter { public $name = '我是调度器'; } $container = new container(); $container->adapter = new adapter(); class autofelix { private $container; public function __construct(container $container) { $this->container = $container; } public function who($class) { return $this->container->instance[$class]->name; } } $autofelix = new autofelix($container); $who = $autofelix->who('adapter'); var_dump($who); //我是调度器
<?php $container = new container(); $container->adapter = new adapter(); //高阶优化 $container = new container(); $container->adapter = function () { return new adapter(); };
PHP ビデオ チュートリアル )
以上がPHP における DI 依存関係の挿入を簡単に理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。