Doit une fonction de l'utilisation: return null;?
Si un retour de fonction null
?
E. g.
function test()
{
return null; //vs return;
}
Est le dernier considéré comme une mauvaise pratique ou n'est-il pas d'importance?
PS
Si c'est une mauvaise pratique qui ne devrait pas être subjectif à mon humble avis.
- Si vous avez une pratique d'indiquer que
null
valeur signifie quelque chose de spécifique, c'est à dire les arguments de la fonction contenir de mauvaises données, puis aller de l'avant. Mais souvent boolean retour est plus que suffisant, si. J'utilisenull
anonyme funcs qui devrait revenir données réelles, de sorte booleanfalse
est considéré comme un rendement acceptable, maisnull
ne l'est pas. - Nous pouvons conclure que c'est redondant, comme le moteur d'exécution déjà fait. Mais cela ne le rend pas mauvais ou inutile. La réponse est explicite. Plus intéressant encore, ne devriez-vous pas écrire
NULL
? - tu veux dire
null
vsNULL
? - Oui, je crois que les majuscules variante est la forme canonique de jeton. Et pour en revenir à caractère explicite, il a un plus grand effet d'annonce.
- N'est pas écrit pas de retour encore plus explicite ici?
Vous devez vous connecter pour publier un commentaire.
Si vous ne retourne rien, il suffit d'utiliser
return;
ou de les omettre tout à la fin de la fonction.Si votre fonction est généralement retourne quelque chose, mais n'est pas pour une raison quelconque,
return null;
est le chemin à parcourir.Qui est similaire à la façon dont vous le faites par exemple dans C: Si votre fonction ne retourne pas les choses, c'est
void
, sinon souvent, elle retourne un pointeur valide ou NULL.null
est encore quelque chose...Toujours une bonne pratique consiste à montrer ce que vous êtes de retour.
Mais comme une pointe, les suivantes sont équivalentes:
Dans tous les cas, pour
var_dump(test());
sera:NULL
plutôt à faire moins de mots et, par conséquent, une évidence?Une fonction non définie valeur de retour en PHP est toujours égal à
NULL
, de sorte qu'il ne fait aucune différence (le moteur d'exécution ne présente).Ce qui fait la différence, c'est que vous utilisez des éléments de document et de la valeur de retour avec le
@return
tag si intelligent IDE de l'offre d'info ici.Si vous voulez signal par le docblock que non-retour d'une valeur est prévu, vous pouvez utiliser
void
:Si vous voulez signal de retour
NULL
est prévu, vous pouvez utilisernull
ouNULL
(en fonction de votre code de style pour la majuscule PHP standard constantes):ou:
Qui devrait permettre aux codeurs de l'intention visible que par PHP, c'est serait toujours
null
que les faits de valeur de retour.Lire sur:
Plus de détails et des informations à jour est dans PeeHaa la réponse à cette même question.
C'est juste stupide pour revenir
null
si il n'y a rien à y retourner. Fairereturn;
montre l'intention de ne pas renvoyer réellement quoi que ce soit. Et il est clair que la fonction n'.Le fait que PHP ne dispose pas d'un
void
type de retour mais ne devrait pas être une raison de faire de l'intention de moins en moins claires. Notez également que PHP 7.1 fournira un soutien pour levoid
type de retour:Sémantiquement, je ne pense pas qu'il y a une différence entre les deux. Selon le La documentation PHP sur le retour:
Personnellement, j'aime mettre l'NULL. Ensuite, il n'y a pas de question de ce qui est renvoyé, ce qui rend votre débogage d'un peu plus facile.
return;
soit...La POIRE les meilleures pratiques page un
return null
dans leur "Retour au début" exemple. Cela augmente la lisibilité que nous devons toujours essayer de le faire puisque nous écrire du code pour les humains, pas les ordinateurs.source: http://pear.php.net/manual/en/standards.bestpractices.php
Lorsque vous utilisez le type de retour des déclarations avec le nullable préfixe "?" il y a une différence!
La documentation PHP, dit ...
Donc, lorsque vous revenez en rien le message d'erreur est:
Fatal error: Uncaught TypeError: Return value of test() must be of the type string or null, none returned in ...
Et lorsque vous revenez
return;
le message d'erreur est:Fatal error: A function with return type must return a value (did you mean "return null;" instead of "return;"?) in ...
Lorsque vous revenez
null
, tout va bien.Voir https://3v4l.org/5NTvg