Maison >développement back-end >tutoriel php >Avis PHP : Solution pour essayer d'obtenir la propriété d'un non-objet
Avis PHP : Solution pour essayer d'obtenir la propriété d'un non-objet
Dans le processus d'écriture de code en PHP, nous pouvons rencontrer le message d'erreur "Essayer d'obtenir la propriété d'un non-objet". Ce message d'erreur se produit généralement parce que nous essayons d'accéder à une propriété d'objet inexistante, provoquant une erreur dans le code.
Ce message d'erreur apparaît généralement dans les situations suivantes :
Ce message d'erreur apparaîtra lorsque nous tenterons d'accéder à une propriété d'objet qui n'existe pas. Par exemple :
$foo = null; echo $foo->bar;
Dans cet exemple, $foo est une valeur nulle, ce n'est pas un objet, nous ne pouvons donc pas accéder à ses propriétés.
Solution :
Pour éviter cette erreur, nous devons nous assurer que l'objet doit déjà exister avant d'accéder à ses propriétés. Ceci peut être réalisé en utilisant la fonction isset(). Par exemple :
if(isset($foo)){ echo $foo->bar; }
De cette façon, si $foo n'existe pas, il ne tentera pas d'accéder à ses propriétés, évitant ainsi cette erreur.
Ce message d'erreur apparaîtra également lorsque nous essayons d'accéder à une propriété d'un objet qui n'existe pas. Par exemple :
class foo { public $bar; } $foo = new foo(); echo $foo->baz;
Dans cet exemple, l'objet $foo existe, mais il n'a pas de propriété nommée "baz", nous ne pouvons donc pas y accéder.
Solution :
Pour éviter cette erreur, nous devons nous assurer qu'avant d'accéder à la propriété d'un objet, la propriété doit déjà exister. On peut ajouter un jugement au code pour vérifier si la propriété existe, par exemple :
class foo { public $bar; } $foo = new foo(); if(property_exists($foo, 'baz')) { echo $foo->baz; }
De cette façon, si l'objet $foo n'a pas de propriété nommée "baz", il ne tentera pas d'y accéder, évitant ainsi cette erreur.
Une autre situation est que bien que les propriétés de l'objet existent, elles ne sont pas initialisées correctement. Cela peut entraîner une erreur « Essayer d'obtenir la propriété d'un non-objet » lors de la tentative d'accès à la propriété. Par exemple :
class foo { public $bar; public function __construct() { $this->bar = new bar(); } } class bar { public $baz; } $foo = new foo(); echo $foo->bar->baz;
Dans cet exemple, l'objet $foo a une propriété appelée "bar", mais il n'est pas initialisé correctement dans le constructeur, nous ne pouvons donc pas accéder à sa propriété "baz".
Solution :
Pour éviter cette erreur, nous devons nous assurer que la propriété d'un objet a été correctement initialisée avant d'y accéder. Dans l'exemple ci-dessus, nous pouvons ajouter une fonction d'initialisation à l'objet $foo pour garantir que la propriété "bar" est correctement initialisée :
class foo { public $bar; public function __construct() { $this->init(); } private function init(){ $this->bar = new bar(); } } class bar { public $baz; } $foo = new foo(); echo $foo->bar->baz;
De cette façon, lorsque nous essayons d'accéder à la propriété "bar" de l'objet $foo, il est déjà correctement initialisé et nous pouvons accéder avec succès à la propriété "baz", en évitant le message d'erreur "Essayer d'obtenir la propriété d'un non-objet".
Résumé :
Dans le processus d'écriture de code en PHP, nous devons faire attention pour éviter le message d'erreur "Essayer d'obtenir la propriété d'un non-objet". Nous devons nous assurer qu'avant d'accéder aux propriétés d'un objet, l'objet doit déjà exister et les propriétés doivent avoir été correctement initialisées pour éviter d'accéder à des propriétés non existantes. Vous pouvez utiliser les fonctions isset() et property_exists() pour déterminer si l'objet et les propriétés existent, et ajouter une fonction d'initialisation pour garantir que les propriétés de l'objet sont correctement initialisées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!