Avec la sortie de PHP8, la nullité des attributs est devenue une nouvelle fonctionnalité importante. Cette fonctionnalité nous permet de déclarer qu'une propriété peut être nullable, nous donnant plus de contrôle sur notre code et nous aidant à réduire certaines erreurs potentielles.
Qu'est-ce que la nullité d'un attribut ?
Avant PHP, nous ne pouvions déclarer des propriétés que sous forme de types fixes (tels que chaîne, entier, booléen, etc.). Cependant, dans certains cas, les propriétés peuvent ne pas être initialisées ou ne pas recevoir une valeur nulle. Cela signifie que lors de l'appel de ces propriétés, nous pouvons rencontrer une erreur fatale, telle qu'une variable non définie ou l'impossibilité d'appeler une méthode non définie.
La nullité de l'attribut est obtenue en ajoutant un point d'interrogation devant la déclaration de l'attribut. Par exemple, nous pouvons déclarer une propriété de chaîne nullable comme suit :
public ?string $name;
Cela signifie que nous pouvons définir cette propriété sur NULL au lieu d'une chaîne, évitant ainsi une erreur fatale.
Comment utiliser la nullité des attributs pour améliorer la qualité du code ?
L'utilisation de la nullité des attributs peut grandement améliorer la qualité du code, voici quelques exemples :
Par exemple, nous avons une classe Person, qui a un nom et un attribut age. Nous pouvons utiliser la nullité des propriétés pour sécuriser notre code, comme indiqué ci-dessous :
class Person { public ?string $name; public ?int $age; public function displayInfo(): string { $name = $this->name ?? "Unknown"; $age = $this->age ?? "Unknown"; return "Name: $name, Age: $age"; } }
Dans l'exemple ci-dessus, nous avons utilisé l'opérateur de fusion nul (??) pour fournir une valeur par défaut pour les propriétés non définies. Cela signifie que même si la propriété est NULL, notre code n'obtiendra pas d'erreur fatale.
Dans certains cas, nous souhaitons vérifier si une propriété est vide. Par exemple, si nous utilisons une chaîne vide comme valeur par défaut, nous souhaiterons peut-être empêcher l'utilisateur de transmettre une chaîne vide. Nous pouvons y parvenir en utilisant la propriété nullabilité comme indiqué ci-dessous :
class User { public ?string $name; public function setName(?string $name): void { if ($name === "") { throw new InvalidArgumentException("Name can't be empty"); } $this->name = $name; } }
Dans l'exemple ci-dessus, nous avons utilisé une propriété $name nullable de type NULL ou String. Dans la méthode setName, nous vérifions d’abord si $name est une chaîne vide et si c’est le cas, nous levons une exception. Sinon, nous attribuons la valeur à l'attribut.
Dans certains cas, nous pouvons souhaiter convertir une propriété nullable en une propriété non nullable. Par exemple, nous pourrions avoir un tableau associatif contenant les mêmes clés que les propriétés de l'objet. Nous pouvons utiliser la nullité des propriétés pour convertir ces valeurs en propriétés d'objet comme indiqué ci-dessous :
class Post { public ?string $title; public ?string $content; public function __construct(array $data) { $this->title = $data['title'] ?? null; $this->content = $data['content'] ?? null; } public function toObject(): object { $obj = (object)[]; foreach ($this as $key => $value) { $obj->{$key} = &$this->{$key}; } return $obj; } } $data = [ 'title' => 'Hello', 'content' => 'World', ]; $post = new Post($data); $obj = $post->toObject();
Dans l'exemple ci-dessus, nous avons utilisé la nullité des propriétés pour simplifier le code. Dans le constructeur, nous parcourons le tableau associatif et attribuons la valeur à la propriété nullable (si la clé n'existe pas, la valeur sera NULL). Dans la méthode toObject, nous avons converti l'objet en objet et supprimé la nullité, faisant de la propriété une propriété non nulle.
Résumé
La nullité des attributs est une fonctionnalité très utile qui peut grandement améliorer la qualité de notre code. Cela peut nous aider à éviter certaines erreurs courantes, comme éviter d'utiliser des variables ou des méthodes non définies, et peut nous aider à mieux contrôler notre code. Si vous n'avez pas encore mis à niveau vers PHP8, pensez à utiliser cette fonctionnalité pour améliorer la qualité de votre code.
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!