通常来说,如果我想将 $myarray 中的参数传递给 $somefunction 函数,我可以在 PHP 中使用下面的方法:
call_user_func_array($somefunction, $myarray);
但是,当想要调用的函数是对象的构造函数时,这种方法就不起作用了。出于相当明显的原因,以下操作是无效的:
$myobj = new call_user_func_array($classname, $myarray);
有没有相对优雅且有效的解决方案?
通常来说,如果我想将 $myarray 中的参数传递给 $somefunction 函数,我可以在 PHP 中使用下面的方法:
call_user_func_array($somefunction, $myarray);
但是,当想要调用的函数是对象的构造函数时,这种方法就不起作用了。出于相当明显的原因,以下操作是无效的:
$myobj = new call_user_func_array($classname, $myarray);
有没有相对优雅且有效的解决方案?
ReflectionClass::newInstanceArgs
— 根据给定的参数创建一个新的类实例。示例:
$reflector = new ReflectionClass('Foo');
$foo = $reflector->newInstanceArgs(array('foo', 'bar'));
...
或扩展运算符:http://php.net/manual/en/migration56.new-features.php#migration56.new-features.splat - jhuet