我如何使用call_user_func_array调用一个类的构造函数?
不可能这样做:
$obj = new $class();
call_user_func_array(array($obj, '__construct'), $args);
因为如果构造函数有参数,new将失败。
限制条件:我无法控制需要实例化的类,也不能修改它们。
不要问我为什么要做这种疯狂的事情,这只是一个疯狂的测试。
我如何使用call_user_func_array调用一个类的构造函数?
不可能这样做:
$obj = new $class();
call_user_func_array(array($obj, '__construct'), $args);
因为如果构造函数有参数,new将失败。
限制条件:我无法控制需要实例化的类,也不能修改它们。
不要问我为什么要做这种疯狂的事情,这只是一个疯狂的测试。
您可以像这样使用reflection:
$reflect = new ReflectionClass($class);
$instance = $reflect->newInstanceArgs($args);
...
运算符也可以用于此目的。$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);
}