我想知道是否有人知道一个函数可以完全实用地创建一个类似于 call_user_func_array() 工作方式的类对象。我想要做的是将不同数量的参数传递给 __construct()。
我需要类似的东西:
$class = create_object('myobject', $array);
具有以下行为;
$class = new myobject($array[0], $array[1], $array[2], ...);
注意:这是针对通用框架组件的,因此不能将整个数组作为第一个构造参数传递。
答案 0 :(得分:0)
您可以使用 PHP 的功能来做到这一点。您可以将数组解包为参数列表:
function create_object($type, array $args = [])
{
return new $type(...$args);
}
虽然不确定是否需要这个。
答案 1 :(得分:0)
对于 PHP <5.6,这可以使用 ReflectionClass 来实现。
function create_object($class_name, $args=array()) {
$reflect = new ReflectionClass($class_name);
return $reflect->newInstanceArgs($args);
}
注意:ReflectionClass 的速度是 splat 运算符的两倍。 https://stackoverflow.com/a/24648651/1135440