Utilisation de types de retour Nullable en PHP
"L’une des fonctionnalités les plus intéressantes que PHP offre est l’indication de type spécifiquement pour ceux qui viennent d’un arrière-plan de programmation orientée objet.
Du manuel PHP :
Les déclarations de type permettent aux fonctions d’exiger que les paramètres soient d’un certain type au moment de l’appel. Si la valeur donnée est d’un type incorrect, alors une erreur est générée: en PHP 5, ce sera une erreur fatale récupérable, tandis que PHP 7 lèvera une exception TypeError.
La raison pour laquelle cela est important est qu’il donne aux personnes qui vont utiliser votre code – en particulier celles qui écriront du code par rapport à votre code – quels types de paramètres un constructeur ou une fonction donné acceptera.
Mais il y a plus que cela car les indications de type sont également applicables au type de données qu’une fonction peut renvoyer.
Types de retour Nullable
Pour commencer, disons que vous avez une fonction censée renvoyer un objet quelconque. Dans cet exemple, disons que nous avons un Postet que le poteau est représenté par un modèle. Naturellement, le modèle sera de type post donc la signature de classe ressemblera à ceci :
<?php
namespace Acme;
class Post {
// Attributes, Constructor, and Functions here.
}
Supposons maintenant que vous ayez une classe secondaire qui va renvoyer une instance de la publication. Lors de l’utilisation d’un indice de type pour la fonction, la signature ressemblerait à ceci :
<?php
namespace Acme;
class PostManager {
private $post;
// Constructor and other Functions here.
public function getPost(): Post
{
return $this->post;
}
}
Le fait est que la méthode peut renvoyer un message ou nullsi le modèle n’a jamais été instancié, passé dans une classe donnée ou n’existe tout simplement pas pour une raison quelconque, nous devons en tenir compte.
Exemple concret : si vous avez travaillé en profondeur sur WordPress pendant un certain temps, vous savez que les fonctions peuvent renvoyer plusieurs choses (comme une instance de WP_Errorou un tableau). Mais dans le cas le plus pur orienté objet dont je parle ci-dessus, nous examinons une fonction qui peut renvoyer nullou peut renvoyer une instance de Post.
Et pour l’indiquer, vous pouvez paramétrer la méthode comme ceci :
<?php
namespace Acme;
class PostManager {
private $post;
// Constructor and other Functions here.
public function getPost(): ?Post
{
if ($this->post === null) {
return null;
}
return $this->post;
}
}
En bref, ajouter le simple point d’interrogation avant le type d’objet indique "Cette méthode peut renvoyer null ou une instance de Post."
Ou, plus précisément du manuel PHP :
Les déclarations de type pour les paramètres et les valeurs de retour peuvent désormais être marquées comme nullables en préfixant le nom du type avec un point d’interrogation. Cela signifie qu’en plus du type spécifié,
NULLpeut être respectivement passé en argument ou renvoyé en tant que valeur.
Donc, oui, c’est un peu long pour expliquer un concept simple. Mais je trouve que l’utilisation d’exemples concrets est souvent plus utile que de simplement en parler dans l’abstrait.