web-dev-qa-db-fra.com

appeler une méthode à partir d'une autre méthode dans la même classe PHP

J'essaie d'utiliser une méthode à partir d'une autre méthode dans une classe. Je n'ai pas beaucoup d'expérience en PHP5 OOP, et j'ai cherché des réponses, mais je n'en ai pas trouvé. J'essaie d'utiliser getClientInfo () dans sendRequest (), qui est dans la même classe.

class DomainHandler {

    public static function getClientInfo($db, $client_id)
    {
        //Do stuff
    }

    public static function sendRequest($details)
    {

        require_once('MySQL.class.php');
        $db = new MySQL;

        getClientInfo($db, $client);
    }
}

Et ça me dit:

Erreur fatale: appel à la fonction non définie getClientInfo ()

J'ai aussi essayé

parent::getClientInfo($db, $client); 

et

$this->getClientInfo($db, $client);

en vain.

Des idées?

36
Constant Meiring

C'est une méthode statique, vous devez donc l'appeler avec self::getClientInfo ou DomainHandler::getClientInfo.

Aussi: vous voudrez peut-être lire sur la programmation orientée objet car il semble que vous n'ayez pas encore compris de quoi il s'agit vraiment (il ne s'agit pas simplement de mettre des fonctions entre une classe Foo {et} et de mettre du statique public devant elles)

42
Morfildur

Vous déclarez les fonctions comme statique et donc elles ne sont pas dans le contexte de l'objet - vous pouvez les appeler avec DomainHandler::getClientInfo() ou self::getClientInfo().

Si vous n'avez pas explicitement besoin que les fonctions soient statiques, vous pouvez supprimer le mot clé static, puis $this->getClientInfo() fonctionnera.

19
Tatu Ulmanen

'self' est le mot-clé que vous recherchez

cela dit, pouvez-vous expliquer pourquoi vous avez besoin que vos méthodes soient statiques? "statique" est un style médiocre et doit être évité.

3
user187291