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

没有“驱动程序”,因为您使用的是具体的 3rd 方库,所以只需要求这个类:

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

当然,您可以为 SSH 驱动程序创建代理接口并基于此 Ipworks_SExec 类实现第一个适配器,但如果您现在不需要不同的适配器,那将是多余的。

于 2013-04-23T14:57:50.777 回答
0

我的类 SSH.php 是否应该在 Ipworks_SExec 和她之间使用依赖注入?

我对你的问题有点困惑。然而,依赖注入是为了动态加载依赖。正如您所说,您的 SSH 类必须使用 Ipworks_SExec 那么依赖注入可能没有什么意义(只是硬编码)。

除非 Ipworks_Exec 真的是可变的,并且每次使用它时都需要正确且唯一地设置,在这种情况下,您可以使用依赖注入来使您的代码更易于维护。

于 2013-04-23T15:00:03.423 回答