Cet article présente principalement l'introduction des contraintes de type en PHP. Les contraintes de type peuvent être implémentées dans les méthodes et fonctions de classe PHP, mais les paramètres ne peuvent spécifier que quatre types : classe, tableau, interface et appelable. et PHP ne peut pas contraindre les types scalaires ou autres types. J'espère que cet article sera utile à tout le monde.
Les contraintes de type peuvent être implémentées dans les méthodes et fonctions de classe PHP, mais les paramètres ne peuvent spécifier que quatre types : classe, tableau, interface et appelable. Les paramètres peuvent par défaut être NULL. PHP ne peut pas contraindre les types scalaires ou d'autres types.
L'exemple suivant :
<?php class Test { public function test_array(array $arr) { print_r($arr); } public function test_class(Test1 $test1 = null) { print_r($test1); } public function test_callable(callable $callback, $data) { call_user_func($callback, $data); } public function test_interface(Traversable $iterator) { print_r(get_class($iterator)); } public function test_class_with_null(Test1 $test1 = NULL) { } } class Test1{} $test = new Test(); //函数调用的参数与定义的参数类型不一致时,会抛出一个可捕获的致命错误。 $test->test_array(array(1)); $test->test_class(new Test1()); $test->test_callable('print_r', 1); $test->test_interface(new ArrayObject(array())); $test->test_class_with_null();
Alors, comment contraindre les types scalaires ?
La bibliothèque d'extension PECL fournit l'extension SPL Types pour implémenter les contraintes de type entier, float, bool, enum et string.
$int = new SplInt ( 94 ); try { $int = 'Try to cast a string value for fun' ; } catch ( UnexpectedValueException $uve ) { echo $uve -> getMessage () . PHP_EOL ; } echo $int . PHP_EOL ; /* 运行结果: Value not an integer 94 */
Les types SPL réduiront certaines flexibilités et performances, alors réfléchissez-y à deux fois dans les projets réels.
Recommandations associées :
Types de données PHP et types de variables de jugement
Quelques fonctions PHP négligées (organisées)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!