通过将参数数组传递给 __construct() 来创建对象的函数?

Function to create objects by passing an array of parameters to __construct()?

我想知道是否有人知道可以完全实用地创建一个类似于 call_user_func_array() 工作方式的 class 对象的函数。我想要做的是将不同数量的参数传递给 __construct().

我需要这样的东西:

$class = create_object('myobject', $array);

具有以下行为;

$class = new myobject($array[0], $array[1], $array[2], ...);

注意:这是针对通用框架组件的,因此不能将整个数组作为第一个构造参数传递。

您可以使用 PHP 的功能来做到这一点。您可以将数组解包为参数列表:

function create_object($type, array $args = [])
{
    return new $type(...$args);
}

虽然不确定是否需要这样做。

对于 PHP <5.6 这可以使用 ReflectionClass 来实现。

function create_object($class_name, $args=array()) {
  $reflect = new ReflectionClass($class_name);
  return $reflect->newInstanceArgs($args);
}

注意:ReflectionClass 的速度是 splat 运算符的两倍。