快速的一个:
有没有办法在PHP中强制执行可变函数的类型?我假设没有,但也许我错过了什么.
截至目前,我只是强制所需类型的一个必需参数,并迭代检查其余的.
public function myFunction(MyClass $object){
foreach(func_get_args() as $object){
if(!($object instanceof MyClass)){
// throw exception or something
}
$this->_objects[] = $object;
}
}
Run Code Online (Sandbox Code Playgroud)
更好的解决方案?
目的:
一个容器对象,充当子对象的迭代列表,具有一些实用程序功能.使用可变参数构造函数调用它将是这样的:
// returned directly from include
return new MyParent(
new MyChild($params),
new MyChild($params),
new MyChild($params)
);
Run Code Online (Sandbox Code Playgroud)
另一种选择可能是addChild方法链:
$parent = new MyParent;
return $parent
->addChild(new MyChild($params))
->addChild(new MyChild($params))
->addChild(new MyChild($params));
Run Code Online (Sandbox Code Playgroud)
孩子们也会对他们的构造函数提出几个论点,所以我试图在易读性和处理费用之间取得平衡.