Jak wywołać konstruktor za pomocą call_user_func_array w PHP?

Jak mogę wywołać konstruktor klasy za pomocą call_user_func_array?

Nie można tego zrobić:

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

ponieważ jeśli konstruktor ma parametry, nowy się nie powiedzie.

Ograniczenie: Nie kontroluję klas, które muszę tworzyć, ani nie mogę ich modyfikować.

Macie jakieś pomysły?

1 odpowiedź

Możesz użyć:

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

Począwszy od PHP 5.6.0, do tego celu można również użyć operatora:

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

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.