1
我有一个类是一堆模块对象的容器。眼下容器发生在文件路径的数组,然后包括文件和实例化模块如何重构此构造函数以使其可测试?
class module {
function execute();
}
class container {
public $Name;
public $Modules;
public __construct($Obj){
$this->Name = $Obj->Name;
foreach($this->Modules as $M){
include_once($M);
$className = $this->GetClassName($M);
$this->Modules[] = new $className;
}
}
public execute(){
foreach($this->Modules as $M){
$M->execute();
}
}
}
我不能确定什么是最好的方式来重构这个,使其容易测试的。
class containerFactory{
public function createContainer($Obj){
$C = new Container($Obj);
$C->InstiateModules();
return $C;
}
}
class container{
public function InstiateModules(){
$tmp = array();
foreach($this->Modules as $M){
include_once($M);
$className = $this->GetClassName($M);
`enter code here`$this->Modules[] = new $className;
}
$this->Modules = $tmp;
}
public function __construct($Obj){
$this->Name = $Obj->Name;
$this->Modules = $Obj->Modules;
}
}
有关我还应该做什么的任何建议? 感谢
我看不出究竟是不是即使在第一个版本tesable ... BWT,你的构造函数使用未初始化$这个 - >模块,怎么回事? – 2009-07-04 17:54:31