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

时间:2020-12-18 19:02:19

标签: php class object instantiation

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

我需要类似的东西:

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

具有以下行为;

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

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

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