PHP类型约束如何使用,有什么要注意的?

Admin 2022-10-10 群英技术资讯 277 次浏览

这篇文章主要讲解了“PHP类型约束如何使用,有什么要注意的?”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP类型约束如何使用,有什么要注意的?”吧!

PHP 5 可以使用类型约束。函数的参数可以指定必须为对象(在函数原型里面指定类的名字),接口,数组(PHP 5.1 起)或者 callable(PHP 5.4 起)。不过如果使用NULL 作为参数的默认值,那么在调用函数的时候依然可以使用 NULL 作为实参。

如果一个类或接口指定了类型约束,则其所有的子类或实现也都如此。

类型约束不能用于标量类型如 int 或 string。Traits 也不允许。

Example #1 类型约束示例

<?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 = 'Hello World';
    }
?>

函数调用的参数与定义的参数类型不一致时,会抛出一个可捕获的致命错误。

<?php
    // 两个类的对象
    $myclass = new MyClass;
    $otherclass = new OtherClass;

    // 致命错误:第一个参数必须是 OtherClass 类的一个对象
    $myclass->test('hello');

    // 致命错误:第一个参数必须为 OtherClass 类的一个实例
    $foo = new stdClass;
    $myclass->test($foo);

    // 致命错误:第一个参数不能为 null
    $myclass->test(null);

    // 正确:输出 Hello World
    $myclass->test($otherclass);

    // 致命错误:第一个参数必须为数组
    $myclass->test_array('a string');

    // 正确:输出数组
    $myclass->test_array(array('a', 'b', 'c'));

    // 正确:输出 ArrayObject
    $myclass->test_interface(new ArrayObject(array()));

    // 正确:输出 int(1)
    $myclass->test_callable('var_dump', 1);
?>

类型约束不只是用在类的成员函数里,也能使用在函数里:

<?php
    // 如下面的类
    class MyClass {
        public $var = 'Hello World';
    }

    /**
     * 测试函数
     * 第一个参数必须是 MyClass 类的一个对象
     */
    function MyFunction (MyClass $foo) {
        echo $foo->var;
    }

    // 正确
    $myclass = new MyClass;
    MyFunction($myclass);
?>

类型约束允许 NULL 值:

<?php

    /* 接受 NULL 值 */
    function test(stdClass $obj = NULL) {}

    test(NULL);
    test(new stdClass);
?>

以上就是关于“PHP类型约束如何使用,有什么要注意的?”的介绍了,感谢各位的阅读,希望这篇文章能帮助大家解决问题。如果想要了解更多知识,欢迎关注群英网络,小编每天都会为大家更新不同的知识。 群英智防CDN,智能加速解决方案
标签: PHP类型约束

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服