Wie man den Konstruktor mit call_user_func_array in PHP aufruft

Lesezeit: 1 Minute

Wie man den Konstruktor mit call user func array in PHP aufruft
Matthias Napoli

Wie könnte ich den Konstruktor einer Klasse mit call_user_func_array aufrufen

Es ist nicht möglich:

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

denn wenn der Konstruktor Parameter hat, die Neu wird versagen.

Einschränkung: Ich kontrolliere weder die Klassen, die ich instanziieren muss, noch kann ich sie ändern.

Frag mich nicht, warum ich diese verrückte Sache machen will, das ist ein verrückter Test.

  • Sehen Sie sich hier verschiedene Lösungen an: stackoverflow.com/questions/1929108/…

    – Gordon

    9. März 10 um 13:32 Uhr

Wie man den Konstruktor mit call user func array in PHP aufruft
Salat

Sie können verwenden Betrachtung mögen:

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

Ab PHP 5.6.0 ist die ... Operator kann auch für diesen Zweck verwendet werden.

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

  • Diese … Syntax ist so überwältigt 😀

    – Kirill Titow

    22. Juni 16 um 08:14 Uhr

  • Diese drei Punkte haben mir den Tag gerettet. Danke

    – MujtabaFR

    10. August 17 um 6:41 Uhr

  • Der unterschätzteste Operator aller Zeiten. Danke @salathe!

    – Entwickler Null

    16. August 2020 um 0:37 Uhr

  • Dies schlägt niedriger als 5.6.0 mit folgendem Fehler fehl: Analysefehler: Syntaxfehler, unerwartetes ‘.’

    – Weiter

    24. März 21 um 11:16 Uhr


.

758800cookie-checkWie man den Konstruktor mit call_user_func_array in PHP aufruft

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy