依存性注入とは何ですか?この記事では、PHP における依存性注入について理解し、依存性注入が行われる理由、依存性注入の応用について紹介します。
1. 依存性注入 (DI) とは
- 依存性注入 (DI)実際、これは基本的に、クラスへの依存関係がコンストラクターを通じて自動的に挿入されることを意味します。
- 平たく言えば、現在クラスを操作しているが、このクラスの一部のメソッドまたは関数は、このクラスでは完了できないことを意味します。このクラスだけで実行できますが、別のクラスの助けを借りてのみ実現できます。
- 最も直接的な兆候は、パラメーター データがオブジェクトとして渡される場合です。厳密に言うと、別のクラスで別のクラスを操作したいのですが、二つのクラスの間には相互依存関係があり、パラメータを渡す方法をインジェクションと呼びます
II 、その理由依存関係の注入が表示されます
- 最初に、PHP が 1 つのクラス内の別のクラスを使用する必要がある場合、次の操作を実行します。
- たとえば、必要な場合コンテナ クラスでアダプタ クラスを使用するには、使用前にインスタンス化する必要があります。
- 多数の外部クラスを使用する必要がある場合、結合度が高くなりすぎて、簡単に難易度
- 平たく言えば、コンテナは外部クラスなしでは機能しません。これを結合度が高すぎるといいます。
<?php
class container
{
private $adapter;
public function __construct()
{
$this->adapter = new adapter();
}
}
ログイン後にコピー
3. 単純な依存関係のインジェクション
- 上記のコードは結合度が高すぎるため、主に結合を理解するために依存性注入が発生します。
- 以下に示すように、必要なのは次のとおりです。操作する必要があるクラス オブジェクトを渡すだけです。
- 依存関係注入操作のパラメーターはオブジェクトであり、通常のパラメーターではありません。理解は深まりましたか?
- しかし、このような単純な依存関係は、その結果、多くのクラスに依存すると、パラメーターを渡すのに時間がかかり、混乱が生じやすくなります。
#上記のパラメータの混乱の問題を解決するために、今回は依存性注入が進化しました。
マジックメソッドにより、__get がオブジェクトを設定します。
- このとき、依存関係が多すぎてパラメーターが混乱するという問題を解決できます
<?php
class container
{
private $adapter;
public function __construct(adapter $adapter)
{
$this->adapter = $adapter;
}
}
ログイン後にコピー
5. 依存関係インジェクションの適用
最初にコンテナ クラスを定義します。これは主にコンテナに必要なものを注入するために使用されます。操作対象のクラスを使用する場合は、コンテナ オブジェクトを渡すだけで済みます。 ## 6. 高レベルの最適化
上記のアプリケーションでは、インスタンス化されたオブジェクトをコンテナに直接挿入します。これにより、すべてのオブジェクトがリソースの損失が発生します。
オブジェクトがインスタンス化および注入されないように、クロージャを渡すことができます。使用する必要がある場合は、再度インスタンス化してください。あなたは、サーバーの数を減らすことができます リソースの損失
<?php
class container
{
public $instance = [];
public function __set($name, $value)
{
$this->instance[$name] = $value;
}
}
$container = new container();
$container->adapter = new adapter();
ログイン後にコピー
元のアドレス: https://juejin.cn/post/7004616671864291359-
- 推奨される学習: "
PHP ビデオ チュートリアル - >>
以上がPHP での依存関係の挿入について詳しく学び、それを適用する方法を確認してください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。