Maison  >  Article  >  développement back-end  >  Comment utiliser les contraintes de type pour qualifier les types de fonctions PHP

Comment utiliser les contraintes de type pour qualifier les types de fonctions PHP

伊谢尔伦
伊谢尔伦original
2017-06-26 14:23:422600parcourir

PHP 5 peut utiliser des contraintes de type. Les paramètres de la fonction peuvent spécifier des données qui doivent être de type objet ou de type tableau ou de type récursif ou de type rappel ;

<?php
//如下面的类
class MyClass
{
    /**
     * 测试函数
     * 第一个参数必须为 OtherClass 类的一个对象
     */
    public function test(OtherClass $otherclass) {
        echo $otherclass->var;
    }
    /**
     * 另一个测试函数
     * 第一个参数必须为数组 
     */
    public function test_array(array $input_array) {
        print_r($input_array);
    }
}
    /**
     * 第一个参数必须为递归类型
     */
    public function test_interface(Traversable $iterator) {
        echo get_class($iterator);
    }
    
    /**
     * 第一个参数必须为回调类型
     */
    public function test_callable(callable $callback, $data) {
        call_user_func($callback, $data);
    }
}
// OtherClass 类定义
class OtherClass {
    public $var = &#39;Hello World&#39;;
}
?>
Lorsque les paramètres de l'appel de fonction sont incohérents avec les types de paramètres définis, une erreur fatale capturable sera générée.

<?php
// 两个类的对象
$myclass = new MyClass;
$otherclass = new OtherClass;
// 致命错误:第一个参数必须是 OtherClass 类的一个对象
$myclass->test(&#39;hello&#39;);
// 致命错误:第一个参数必须为 OtherClass 类的一个实例
$foo = new stdClass;
$myclass->test($foo);
// 致命错误:第一个参数不能为 null
$myclass->test(null);
// 正确:输出 Hello World 
$myclass->test($otherclass);
// 致命错误:第一个参数必须为数组
$myclass->test_array(&#39;a string&#39;);
// 正确:输出数组
$myclass->test_array(array(&#39;a&#39;, &#39;b&#39;, &#39;c&#39;));
// 正确:输出 ArrayObject
$myclass->test_interface(new ArrayObject(array()));
// 正确:输出 int(1)
$myclass->test_callable(&#39;var_dump&#39;, 1);
?>
Les contraintes de type ne sont pas seulement utilisées dans les fonctions membres des classes, mais peuvent également être utilisées dans les fonctions.

<?php
// 如下面的类
class MyClass {
    public $var = &#39;Hello World&#39;;
}
/**
 * 测试函数
 * 第一个参数必须是 MyClass 类的一个对象
 */
function MyFunction (MyClass $foo) {
    echo $foo->var;
}
// 正确
$myclass = new MyClass;
MyFunction($myclass);
?>
Les contraintes de type autorisent les valeurs NULL

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