我正在編寫一個考慮可測試性的PHP應用程序,所以我的類總是在它們的構造函數中詢問它們依賴的「協作對象」,就依賴注入模式而言。給PHP對象類型參數一個默認值
這樣,我就可以在我的單元測試中通過模擬或測試實現。
我想實現的目的是爲了能夠實例化一個具有傳遞給它的構造函數參數的空值的類,以便觸發一個爲每個協作者實例化一個默認實現類的回退機制。
因爲在PHP中不能給出對象類型參數的默認值,所以我必須在構造函數中完成它。以下代碼是我目前使用的方法示例:
class Engine
{
private $loader;
private $logger;
public function __construct(ResourceLoader $loader = null, Logger $logger = null)
{
if ($loader == null) $loader = new DefaultResourceLoader;
if ($logger == null) $logger = new DefaultLogger;
$this->loader = $loader;
$this->logger = $logger;
}
}
您對此有何看法?我應該使用IoC容器嗎?還是有另一種將對象類型參數賦予默認值的方法?
在這種情況下,您可以使用我的小型庫[ValueResolver](https://github.com/LapaLabs/ValueResolver)來更緊湊地執行此操作。 – 2015-07-09 10:48:26