PHP中的可变参数函数和类型提示
|
速成一:
有什么方法可以在PHP中为可变参数函数强制执行类型?我假设没有,但是也许我错过了一些东西。
到目前为止,我只是强制使用所需类型的一个必需参数,并反复检查其余部分。
public function myFunction(MyClass $object){
foreach(func_get_args() as $object){
if(!($object instanceof MyClass)){
// throw exception or something
}
$this->_objects[] = $object;
}
}
有更好的解决方案吗?
目的:
一个容器对象,充当子对象的迭代列表,具有一些实用程序功能。用可变参数的构造函数调用它会是这样的:
// returned directly from include
return new MyParent(
new MyChild($params),
new MyChild($params),
new MyChild($params)
);
另一个选择可以是addChild
方法链:
$parent = new MyParent;
return $parent
->addChild(new MyChild($params))
->addChild(new MyChild($params))
->addChild(new MyChild($params));
子代也会对其构造函数采用几个参数,因此我正在尝试在易读性和处理费用之间取得平衡。
没有找到相关结果
已邀请:
2 个回复
刷遍派戳
在这样的示例中,当参数不是NULL且不是MyClass时,PHP就会已经抛出异常(如果传递默认值,则也可以传递NULL)。可选参数不应是返回值
的一部分。我的意思是,如果您不传递第三个参数(此处称为
),它将不会出现在
返回的数组中。 不知道这是否比问题中的代码更实用。 如果您在代码中遇到更多此类情况,则可以创建某种帮助程序以验证函数调用的输入,并委派使用该帮助程序发出的错误消息来抛出异常。这样可以防止重复代码,并在开发中提供更多的便利,因为您可以在为多种情况编写代码时使异常通知更好。 根据您的新反馈,如果您想首先让解释器进行检查工作,则只需进行一点迭代,然后执行addMember函数即可:
用任何列表中错误类型的对象实例化该对象将阻止实例化Collection。 然后,您可以执行以下操作:
傻零凰死授