0

リモートコマンド呼び出しを実装するクラス RemoteCall/Client があります。たとえば、リモート システムでコマンドを SSH で実行するには、次のようにします。

このクラスはアダプターを使用します (今のところ、SSH アダプターのみを使用します)。

RemoteCall/Client.php
RemoteCall/Adapter/AdapterAbstract.php
RemoteCall/Adapter/SSH.php

SSH プロトコルを実装するために、Ipworks_SEexec という外部ライブラリをダウンロードしました (今は聞かないでください)。

私のクラス SSH.php は、Ipworks_SExec と彼女の間で依存性注入を使用する必要がありますか?

public function __construct($driver = null)
{
    $this->_driver = $driver;
}

または、依存性注入を実装せず、そのようなものを用意する方が良いですか:

public function __construct()
{
    $this->_driver = new Ipworks_SEexec();
}

私のクラス SSH.php は、クラス Ipworks_SEexec でのみ動作します。別のライブラリを使用することにした場合、それは不可能です。

4

2 に答える 2

0

私のクラス SSH.php は、Ipworks_SExec と彼女の間で依存性注入を使用する必要がありますか?

私はあなたの質問に少し混乱しています。ただし、依存関係の挿入は、依存関係を動的に読み込むためのものです。SSH クラスが Ipworks_SExec を使用する必要があると言うように、おそらく依存性注入を行う意味はほとんどありません (ハードコードするだけです)。

これは、Ipworks_Exec が実際に変更可能であり、使用するたびに適切かつ一意に設定する必要がある場合を除きます。この場合、依存性注入を使用してコードをより保守しやすくすることができます。

于 2013-04-23T15:00:03.423 に答える
0

具体的なサードパーティライブラリを使用しているため、「ドライバー」はありません。このクラスを必要とするだけです。

public function __construct(Ipworks_SExec $ssh_client)
{
...
}

もちろん、SSH ドライバー用のプロキシ インターフェイスを作成し、この Ipworks_SExec クラスに基づいて最初のアダプターを実装することもできますが、別のアダプターが今すぐ必要でない場合は、やり過ぎです。

于 2013-04-23T14:57:50.777 に答える