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);
La valeur de strict_types (1 ou 0) est spécifiée dans le code. 1 indique le mode de vérification de type strict, qui s'applique aux appels de fonction et aux instructions de retour ; 0 indique un mode de vérification de type faible.
Les paramètres de type pouvant être utilisés sont :
int
float
-
bool
string
interfaces
array
-
callable
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 de ce qui précède le programme est :
9
Résumé de l'instance, convertissez le paramètre 4.1 en un entier 4 puis ajoutez-le.
Exemple de mode strict
Exemple
<?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 type entier inapproprié apparaît dans le paramètre, une erreur sera être signalé.Execute Le résultat est :
PHP Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……
Déclaration du type de retour
PHP 7 ajoute la prise en charge de la déclaration du type de retour, qui spécifie le type de valeur de retour de la fonction.
Les types de retour pouvant être déclarés sont :
int
float
-
bool
string
interfaces
array
-
callable
Instance de déclaration de type de retour
Instance, le résultat du 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
Instance d'erreur de déclaration de type de retour
Instance
<?php declare(strict_types=1); function returnIntValue(int $value): int { return $value + 1.0; } print(returnIntValue(5)); ?>
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 :
Fatal error: Uncaught TypeError: Return value of returnIntValue() must be of the type integer, float returned...