J'ai essayé d'utiliser plus du texte en PHP. Aujourd’hui, j’écrivais une fonction qui prend un booléen avec un paramètre par défaut et j’ai remarqué qu’une fonction de la forme
function foo(boolean $bar = false) {
var_dump($bar);
}
jette réellement une erreur fatale:
La valeur par défaut pour les paramètres avec un indice de type de classe ne peut être que NULL
Bien que fonction de la forme similaire
function foo(bool $bar = false) {
var_dump($bar);
}
ne fait pas. Cependant, les deux
var_dump((bool) $bar);
var_dump((boolean) $bar);
donner exactement le même résultat
: booléen faux
Pourquoi est-ce? Est-ce similaire aux classes wrapper en Java?
http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration
Avertissement
Les alias des types scalaires ci-dessus ne sont pas pris en charge. Au lieu de cela, ils sont traités comme des noms de classe ou d'interface. Par exemple, utiliser boolean comme paramètre ou type de retour nécessitera un argument ou une valeur de retour qui est une instance de la classe ou de l'interface boolean, plutôt que du type bool:<?php function test(boolean $param) {} test(true); ?>
L'exemple ci-dessus affichera:
Erreur fatale: Uncaught TypeError: L'argument 1 passé à test () doit être une instance de boolean, boolean étant donné.
En résumé, boolean
est un alias pour bool
, et les alias ne fonctionnent pas dans les indicateurs de type.
Utilisez le "vrai" nom: bool
Il n'y a pas de similitude entre Type Hinting
et Type Casting
.
Allusion de type est quelque chose comme ça, vous dites à votre fonction quel type doit être accepté.
Type casting signifie "basculer" entre les types.
Les moulages autorisés sont:
(int), (integer) - cast to integer (bool), (boolean) - cast to boolean (float), (double), (real) - cast to float (string) - cast to string (array) - cast to array (object) - cast to object (unset) - cast to NULL (PHP 5)
En php tapez casting (bool) et (boolean) sont identiques.