Maison  >  Article  >  développement back-end  >  Contraintes de type en PHP

Contraintes de type en PHP

*文
*文original
2017-12-27 10:08:421631parcourir

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(&#39;print_r&#39;, 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  =  &#39;Try to cast a string value for fun&#39; ;
} 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

Note sur les fonctions PHP

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn