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

我怎么能用call_user_func_array调用一个类的构造函数

这是不可能的:

$obj = new $class(); call_user_func_array(array($obj, '__construct'), $args); 

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

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

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

你可以使用reflection像:

 $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); }