我正在编写一个考虑可测试性的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