Dans le développement de PHP, il est très courant de signaler les messages d'erreur "Appelez à une fonction membre sur NULL" ou "Essayez d'appeler une méthode non objet". Ce type d'erreur signifie généralement que vous essayez d'appeler une méthode sur un objet qui n'a pas été instancié avec succès. C'est-à-dire que la variable n'est pas réellement un objet.
Pour comprendre ce problème, nous devons être clairs: en PHP, seules les variables du type d'objet peuvent appeler des méthodes. Si vous essayez d'appeler une méthode sur une variable non object (comme NULL ou STRING), le système lance une erreur similaire.
Voici deux situations principales qui conduisent à de telles erreurs:
Lorsque nous essayons d'utiliser la méthode d'un objet dans notre code, nous devons nous assurer que l'objet a été créé correctement. Si le fichier de classe n'est pas correctement introduit, l'espace de noms est incorrect ou il y a une erreur de syntaxe dans le constructeur, l'objet ne peut pas être instancié.
Les solutions comprennent:
class Foo {
// Aucune erreur de syntaxe dans le constructeur
public function __construct() {
echo 'Hello, World!';
}
}
// Mauvaise utilisation:Méthode d'appel sans instanciation
Foo::bar(); // Fatal error
// Utilisation correcte:Instancier d'abord l'objet
$foo = new Foo();
$foo->bar(); // Fatal error: Méthode non définie bar()
Un autre problème courant consiste à définir la variable d'objet sur NULL pendant l'exécution du code, ou à attribuer à tort la valeur à d'autres types non objets, ce qui entraîne une erreur déclenchée lors de l'appel de la méthode.
Solution:
class Foo {
public function bar() {
echo 'Hello, World!';
}
}
// Exemple d'erreur:L'objet est défini sur null
$foo = null;
$foo->bar(); // Fatal error: Call to a member function bar() on null
// Exemple correct:Instancier d'abord l'objet
$foo = new Foo();
$foo->bar(); // Sortir Hello, World!
L'erreur "Essayez d'appeler une méthode non object" dans PHP est principalement causée par des objets ou des variables d'objet instanciés incorrectement attribués de manière incorrecte. Grâce à une logique d'initialisation d'objets raisonnable et à un mécanisme d'inspection de variables rigoureux, ces erreurs peuvent être effectivement évitées et la qualité et la robustesse du code peuvent être améliorées.