1、遇到问题
今天学到函数强类型参数,在尝试编译时,却总是报错。
编译的代码
编译出现的错误如下
Catchable fatal error: Argument 1 passed to sum() must be an instance of int, integer given, called in /Users/yoyo/project/test/text.php on line 112 and defined in /Users/yoyo/project/test/text.php on line 108(可捕获的致命错误:传递给sum()的参数1必须是int的实例,给定整数)
2、解决问题的知识点
最后发现,这属于类型约束,到底什么是类型约束呢,如果真的要执行这段代码应该怎么改呢?
其实大家都知道PHP是若类型语言,它的特点是无需定义变量类型,不过在php的新语法中,在某些特定场合,针对某些特定类型,也可进行语法约束。
类型约束,即可以对函数(方法)的参数设定必须使用的类型。只能对对象、接口、数组函数进行约束。
特定场合:函数(方法)的形参变量
特定类型:对象类型(类名)、接口类型(接口名)(PHP5.1起)和、数组类型(array)(PHP5.1起)、函数类型(callable)(PHP5.4起)
类型约束不能用于标量类型如 int 或 string。Traits 也不允许。
3、成功编译
网友评论