如何在PHP中使用call_user_func_array调用构造函数

如何使用call_user_func_array调用类的构造函数

这是不可能的:

$obj = new $class();

call_user_func_array(array($obj, '__construct'), $args);

因为如果构造函数具有参数,则 新的 将失败。

约束:我不控制必须实例化的类,也不能修改它们。

不要问我为什么要做这个疯狂的事情,这是一个疯狂的考验。

回答:

您可以像这样使用反射:

$reflect  = new ReflectionClass($class);

$instance = $reflect->newInstanceArgs($args);


从PHP 5.6.0起,也可以将...运算符用于此目的。

$instance = new $class(...$args);


if(version_compare(PHP_VERSION, '5.6.0', '>=')){

$instance = new $class(...$args);

} else {

$reflect = new ReflectionClass($class);

$instance = $reflect->newInstanceArgs($args);

}

以上是 如何在PHP中使用call_user_func_array调用构造函数 的全部内容, 来源链接: utcz.com/qa/405800.html

回到顶部