Maison >développement back-end >tutoriel php >Comment l'opérateur Nullsafe de PHP (?-) peut-il empêcher les exceptions de pointeur nul ?

Comment l'opérateur Nullsafe de PHP (?-) peut-il empêcher les exceptions de pointeur nul ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-19 07:07:26727parcourir

How Can PHP's Nullsafe Operator (?-) Prevent Null Pointer Exceptions?

Opérateurs Nullsafe en PHP : réalisation d'une navigation conditionnelle entre objets

En PHP, l'accès aux propriétés des objets et aux méthodes d'appel peut potentiellement entraîner des exceptions de pointeur nul si l'objet est nul ou n'a pas le membre demandé. Pour résoudre ce problème, l'opérateur nullsafe (?-) introduit dans PHP 8 permet une navigation sécurisée dans les propriétés et les méthodes des objets.

Considérez l'instruction suivante :

echo $data->getMyObject() != null ? $data->getMyObject()->getName() : '';

Cette instruction vérifie si le L'objet $data a la propriété getMyObject() et si elle n'est pas nulle. Si la propriété existe et n’est pas nulle, elle accède à la propriété getName() dans cet objet. Cependant, si la propriété n'existe pas ou est nulle, l'instruction ne continuera pas.

En utilisant l'opérateur nullsafe, nous pouvons réécrire l'instruction comme :

echo $data->getMyObject()?->getName();

Dans cette instruction , si $data est null ou n'a pas la propriété getMyObject(), la chaîne d'opérateurs est terminée et null est renvoyé. Cela nous permet de gérer les propriétés manquantes ou les appels de méthode avec élégance sans exceptions.

L'opérateur nullsafe fonctionne avec les opérateurs suivants qui accèdent aux propriétés et méthodes des objets :

  • Accès au tableau ([]) : $data?->[0]
  • Accès à la propriété (->) : $data?->name
  • Accès à la propriété Nullsafe (?->): $data?->name
  • Accès à la propriété statique (::): Parent::name
  • Appel de méthode (->) : $data->getName()
  • Appel de méthode Nullsafe (?->): $data?->getName()
  • Appel de méthode statique (::): Parent::getName()

Par exemple, le code ci-dessous :

$string = $data?->getObject()->getName() . " after";

est équivalent à :

$string = (isset($data) && $data !== null) ? $data->getObject()->getName() . " after" : null;

si $data est null.

En utilisant l'opérateur nullsafe, nous pouvons écrire un code plus propre et plus concis tout en garantissant l'absence d'exceptions de pointeur nul.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn