• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

如何使用类型约束来限定php函数类型

php 搞代码 3年前 (2022-01-22) 17次浏览 已收录 0个评论

PHP 5 可以使用类型约束。函数的参数可以指定必须为对象类型或数组类型或递归类型或回调类型的数据;

<?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);?>

类型约束不只是用在类的成员函数里,也能使用在函数里9来源gaodai#ma#com搞@代~码$网搞gaodaima代码。

<?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函数类型的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何使用类型约束来限定php函数类型
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址