PHP 7 introduit les déclarations de type de retour . Ce qui signifie que je peux maintenant indiquer que la valeur de retour est une certaine classe, interface, tableau, appelable ou l'un des nouveaux types scalaires, comme cela est possible pour les paramètres de fonction.
function returnHello(): string {
return 'hello';
}
Il arrive souvent qu'une valeur ne soit pas toujours présente et que vous puissiez renvoyer quelque chose d'un certain type ou null. Bien que vous puissiez rendre les paramètres nullables en définissant leur valeur par défaut sur null ( DateTime $time = null
), il ne semble pas y avoir de moyen de le faire pour les types de retour. Est-ce bien le cas ou est-ce que je ne trouve pas comment le faire? Celles-ci ne fonctionnent pas:
function returnHello(): string? {
return 'hello';
}
function returnHello(): string|null {
return 'hello';
}
php
nullable
return-type
type-hinting
php-7
Jeroen De Dauw
la source
la source
function returnString(?string $stringNull) : ?string { return $stringNull;}
Trowable
interface PHP7 (en particulier, en étendant leTypeError
)Réponses:
PHP 7.1 prend désormais en charge les types de retour Nullable . Le premier RFC auquel je me suis lié est celui qu'ils ont choisi:
ancienne réponse:
Puisque mon commentaire était en fait une réponse à la question:
PHP 7 ne prend pas encore en charge les types de retour nullables, mais il existe un RFC pour résoudre ce problème, il vise à atterrir dans PHP 7.1. Si elle réussit, la syntaxe affectera alors tous les types-hints (à la fois les types de retour et les types-hints):
Il existe également une RFC concurrente pour ajouter des types d'union, qui serait capable de faire la même chose, mais aurait l'air différent:
Pour l'instant, cependant, vous devrez écrire:
Ou renvoyez simplement une chaîne vide pour être cohérente avec le type de retour et vérifiez la valeur falsifiée:
la source
PHP 7 won't support nullable return-types just yet, but there's an RFC out to address just that
- ouais, RFC, "pour l'instant". Ne vous méprenez pas - je suis un très gros utilisateur de PHP depuis des temps vraiment merdiques de PHP3 jusqu'à maintenant, pas de lacunes, mais quand j'ai vu tous ces RFC qu'ils ont rejetés pour 7, mon impression était juste "WTF?!". Les utilisateurs voient le désordre et sont prêts à le nettoyer de manière rétrocompatible et ils obtiennent simplement "non". Des méthodes propres pour nommer le désordre? Correction denull
ne pas être un citoyen trop spécial? Non, pas nécessaire. Ajouter une option pour rendre tous les trucs sensibles à la casse? Nan .. Et puis, surprise que les gens changent.var
). Ce qui est dommage, c'est qu'au lieu de cela, ils ont accepté un trop grand nombre de gentils à avoir (opérateur de vaisseau spatial par exemple)Les types Nullable sont disponibles en PHP 7.1.
Voici un exemple de syntaxe:
PHP 7.1 est maintenant GA et vous pouvez mettre à niveau à partir de PHP 7.0 (il n'y a que quelques modifications incompatibles avec les versions antérieures que vous devez vérifier)
la source
Cela fonctionne avec n'importe quel type.
Exemple:
la source