Type scalaire PHP et déclaration de type de valeur de retour
Déclaration de type scalaire
Par défaut, tous les fichiers PHP sont en mode de vérification de type faible.
PHP 7 ajoute la fonctionnalité de déclaration de type scalaire. Il existe deux modes pour la déclaration de type scalaire :
Mode forcé (par défaut)
<🎜. > Mode strict
format de syntaxe de déclaration de type scalaire :declare(strict_types=1);
int
float
bool
string
interfaces
array
appelable
instance en mode forcé
instance<?php // 强制模式 function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>Le résultat de sortie de l'exécution du programme ci-dessus est :
9
Exemple de mode strict
Instance<?php // 严格模式 declare(strict_types=1); function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>Étant donné que le programme ci-dessus utilise le mode strict, si un entier inapproprié apparaît dans le paramètre Le type signalera une erreur et le résultat de l'exécution est :
Erreur fatale PHP : Uncaught TypeError : L'argument 2 passé à sum() doit être du type entier, chaîne donnée, appelée dans ...
Déclaration de type de retour
PHP 7 ajoute la prise en charge de la déclaration de type de retour, qui spécifie la fonction return type de valeur. Les types de retour pouvant être déclarés sont :int
float
bool
string
interfaces
array
Dans l'instance de déclaration de type de retour appelable
, le résultat de retour doit être un entier :
instance
<?php declare(strict_types=1); function returnIntValue(int $value): int { return $value; } print(returnIntValue(5)); ?>Le résultat de l'exécution du programme ci-dessus est :
5
<?php declare(strict_types=1); function returnIntValue(int $value): int { return $value + 1.0; } print(returnIntValue(5)); ?>
Puisque le programme ci-dessus adopte le mode strict, la valeur de retour doit être int, mais le résultat du calcul est float, donc une erreur sera signalée. Le résultat de l'exécution est :
Erreur fatale. : Uncaught TypeError : la valeur de retour de returnIntValue() doit être du type entier, float renvoyé...