Maison >développement back-end >tutoriel php >L'opérateur Nullsafe de PHP peut-il simplifier l'accès aux propriétés imbriquées ?

L'opérateur Nullsafe de PHP peut-il simplifier l'accès aux propriétés imbriquées ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-14 04:58:09302parcourir

Can PHP's Nullsafe Operator Simplify Nested Property Access?

Présentation de l'opérateur Nullsafe en PHP

L'opérateur nullsafe (?->) permet aux développeurs d'écrire du code qui accède en toute sécurité aux propriétés des objets et méthodes sans avoir besoin de vérifications nulles explicites. Cela simplifie le code et améliore la lisibilité, en particulier dans les hiérarchies d'objets complexes.

Requête

Pouvons-nous réécrire l'instruction suivante à l'aide de l'opérateur nullsafe ?

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

Réponse

À partir de PHP 8, nous pouvons utiliser le nullsafe en conjonction avec l'opérateur de coalescence nul (?) pour obtenir le comportement souhaité.

Solution

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

Le ?-> L'opérateur rompt la chaîne d'opérateurs lorsqu'il rencontre une valeur nulle, renvoyant effectivement null et mettant fin à l'expression. Les opérateurs qui inspectent les propriétés des objets ou invoquent des méthodes sont considérés comme faisant partie de la chaîne, notamment :

  • Accès au tableau ([]), accès aux propriétés (->), accès aux propriétés nullsafe (?->) , accès aux propriétés statiques (::), appel de méthode (->), appel de méthode nullsafe (?->) et appel de méthode statique (::)

De plus, si les opérateurs suivants de la chaîne ne sont pas considérés comme faisant partie de la chaîne (par exemple, l'opérateur de concaténation dans l'exemple ci-dessous), ils ne seront pas court-circuités :

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

Dans ce cas, si $data est nul, le code donnera :

$string = null . " after";

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