目前,我正在创建一个这样的实例:
function newInstance($clazz, $parameters = []) {
// Do other stuff before
if(!is_array($parameters)) {
$parameters = [$parameters];
}
// Do other stuff before
return (new ReflectionClass($clazz))->newInstanceArgs($parameters)
}
问题是:
将数组用作单个参数,将其解释为参数数组,而不是单个参数。我还考虑过使用“ func_get_args”或添加第三个可选参数,该参数定义是否有一个数组作为参数或给定的数组包含所有参数,但是我不喜欢这样。
例如:
newInstance('clazzname', ['my', 'array']);
// should interpreted as:
function __construct($firstString, $secondString$) {}
// and sometimes as (depends on the class):
function __construct($myArray) {}
有人有主意吗?
答案 0 :(得分:0)
我将使用variable-length arguments来处理此问题:
function newInstance($clazz, ...$parameters) {
// Do other stuff before
return (new ReflectionClass($clazz))->newInstanceArgs($parameters);
}
newInstance('clazzname', 'my', 'array');
// new clazzname('my', 'array');
newInstance('clazzname', ['my', 'array']);
// new clazzname(['my', 'array']);