Forum Programmation.php user_call_method_array() : appeler un constructeur de classe

Posté par .
Tags : aucun
0
13
nov.
2008
Bonjour,

je voudrais pouvoir appeler dynamiquement un constructeur de classes avec plusieurs paramètres.

Lorsqu'il n'y a qu'un seul paramètre, c'est pas pas compliqué :

$class = 'Foo';
$myParam = 'bar';
$myFoo = new $class($bar);


Mais avec plusieurs paramètres, c'est plus compliqué. Selon la classe, le nombre de paramètres du constructeur change, donc impossible de prévoir à l'avance.

Du coup, j'ai regardé du côté de user_call_method_array() et user_call_func_array(), qui permettent d'appeler une méthode ou une fonction en passant les paramètres attendus dans un tableau.

De cette manière, j'arrive à appeler soit une méthode d'instance (par exemple $myFoo->getName(), ou bien une fonction ou méthode statique (par exemple Foo::plop()).

Mais pour appeler un constructeur de classe, comment faire ?

Grand merci d'avance, là vraiment je sèche...
  • # Idem avec l'API de réflexion

    Posté par . Évalué à 2.

    Idem avec l'API de réflexion :

    $class = 'Foo';
    $reflectedClass = new ReflectionClass($class);
    $reflectedConstructor = $reflectedClass->getConstructor();
    $args = array(....);
    $reflectedConstructor->invokeArgs($instance, $args);


    Pareil, même problème ! ReflectionMethod.invokeArgs() demande comme premier paramètre une instance d'objet de la classe concernée... or on veut justement créer cet instance, donc on ne l'a pas encore.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.