将 PHP 中的数组参数传递给构造函数

32

通常来说,如果我想将 $myarray 中的参数传递给 $somefunction 函数,我可以在 PHP 中使用下面的方法:

call_user_func_array($somefunction, $myarray);

但是,当想要调用的函数是对象的构造函数时,这种方法就不起作用了。出于相当明显的原因,以下操作是无效的:

$myobj = new call_user_func_array($classname, $myarray);

有没有相对优雅且有效的解决方案?

1个回答

67
你可以使用反射 API:

示例:

$reflector = new ReflectionClass('Foo');
$foo = $reflector->newInstanceArgs(array('foo', 'bar'));

13
在 PHP 5.6 中,您还可以使用参数展开,通过 ... 或扩展运算符:http://php.net/manual/en/migration56.new-features.php#migration56.new-features.splat - jhuet
快速而简单!我已经在我的新包装加载器模块中使用了反射API,这使我能够在将来的版本中考虑任意数量的参数。 - Shaun Cockerill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接