如何通过调用调用构造函数
我怎么能用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);
}
链接地址: http://www.djcxy.com/p/62525.html
上一篇: How to call the constructor with call
下一篇: GitHub Pages and Jekyll content duplication and SEO issues