3 votes

Appel d'une méthode non statique avec call_user_func_array en PHP

Je cherche à appeler une méthode non statique d'un objet avec call_user_func_array mais je ne comprends pas comment formuler le rappel. J'ai trouvé beaucoup d'exemples similaires en ligne mais rien de tout à fait similaire à ce que je rencontre.

class DBCommand {
    private $db; // L'objet DBConnection

    function __construct() {
        $db = new DBConnection();
    }

    function callMethod($method, $arguments) {
        // Cette ligne me donne l'erreur :
        return call_user_func_array(array($this->db, "$method"), $arguments);
    }
}
?>

Appeler callMethod avec le nom d'une méthode de DBConnection et ses bons arguments me donne ceci

Avertissement PHP: call_user_func_array() attend que le paramètre 1 soit un rappel valide, le premier membre du tableau n'est pas un nom de classe ou objet valide

Et à cause de cela, callMethod retourne null.

4voto

BeetleJuice Points 19471

Utilisez la notation [$objectHandle, "nomMéthode"] pour appeler dynamiquement une méthode non statique :

call_user_func_array([$this, $method], $arguments);

Démonstration en direct

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X