DI 依存性注入とは何ですか?次の記事では、php における DI 依存関係の挿入について詳しく説明します。お役に立てば幸いです。
依存性インジェクション DI
実際、本質的にはクラスへの依存関係がコンストラクタを通じて完了することを意味します自動インジェクション
で操作したいのですが、2つのクラスの間には相互依存関係があり、パラメータを渡す方法を
インジェクション
##と呼びます。 たとえば、
container クラスを使用する必要がある場合、使用する前にインスタンス化する必要があります
多数の外部クラスを使用する必要がある場合、
結合度が高くなりすぎます
#平たく言えば、container
は外部クラスなしでは動作しません。これは
<?php class container { private $adapter; public function __construct() { $this->adapter = new adapter(); } }
単純な依存関係注入#と呼ばれます。 依存性注入
操作のパラメーターは objects
、
<?php class container { private $adapter; public function __construct(adapter $adapter) { $this->adapter = $adapter; } }
高レベルの依存性注入
上記の <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?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();</pre><div class="contentsignin">ログイン後にコピー</div></div>
<?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); //我是调度器
の
object を渡すだけです
依存性注入の高度な最適化
上記のアプリケーションでは、インスタンス化されたオブジェクトを を
に渡すことで、オブジェクトがインスタンス化されて注入されないようにすることができます。自分で使用し、再度インスタンス化する必要があります。これにより、
<?php $container = new container(); $container->adapter = new adapter(); //高阶优化 $container = new container(); $container->adapter = function () { return new adapter(); };
」
以上がPHPでのDI依存性注入について説明する記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。