开发者

How to call the constructor with call_user_func_array in PHP

开发者 https://www.devze.com 2022-12-22 14:33 出处:网络
How could I 开发者_如何学Gocall the constructor of a class with call_user_func_array It is not possible to do :

How could I 开发者_如何学Gocall the constructor of a class with call_user_func_array

It is not possible to do :

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

because if the constructor has parameters, the new will fail.

Constraint : I do not control the classes that I have to instantiate, nor can I modify them.

Don't ask me why I want to do this crazy thing, this is a crazy test.


You can use reflection like:

$reflect  = new ReflectionClass($class);
$instance = $reflect->newInstanceArgs($args);

As of PHP 5.6.0, the ... operator can also be used for this purpose.

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

精彩评论

暂无评论...
验证码 换一张
取 消