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);
PHP 5.6.0、 ...
operator もこの目的で使用できます。
$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);
}