【问题标题】:Function to create objects by passing an array of parameters to __construct()?通过将参数数组传递给 __construct() 来创建对象的函数?
【发布时间】:2021-03-29 10:23:33
【问题描述】:

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

我需要类似的东西:

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

拥有的行为;

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

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

【问题讨论】:

    标签: php class object instantiation


    【解决方案1】:

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

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

    但不确定是否需要这样做。

    【讨论】:

    • 感谢您的回复。我看到这三个点实际上是 PHP 5.6 中称为 splat 运算符的东西。我认为 PHP 5.4+ 没有其他选择,这是该平台的最低要求。
    • 是的,三个点...php.net/manual/en/…
    【解决方案2】:

    对于 PHP

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

    注意:ReflectionClass 的速度是 splat 运算符的两倍。 https://stackoverflow.com/a/24648651/1135440

    【讨论】:

      猜你喜欢
      • 2013-02-22
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 2020-12-22
      • 2021-07-20
      相关资源
      最近更新 更多