2013-04-23 36 views
0

我有一個RemoteCall/Client類實現遠程命令調用。 例如,要通過SSH在遠程系統上運行命令。PHP中的依賴注入無界面也不抽象類

此類使用適配器(現在,我只用一個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。如果我決定使用另一個庫,這是不可能的。

回答

0

我的SSH.php類應該使用Ipworks_SExec和她之間的依賴注入嗎?

我有點被你的問題混淆。但是,依賴注入是用於動態加載依賴關係。正如你所說你的SSH類需要使用Ipworks_SExec,那麼在進行依賴注入時可能沒什麼意義(只是硬編碼)。

這是除非Ipworks_Exec真的是可變的,需要在每個使用它的時間在這種情況下,你可以使用依賴注入,使您的代碼更易於維護的正確和唯一設置。

0

沒有「司機」,因爲你使用的混凝土第三方庫,所以只要求這個類:

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

當然,你可以爲SSH司機創建代理接口還可以實現基於第一適配器這個Ipworks_SExec類,但是如果你現在不需要不同的適配器,那就太過分了。