类型约束

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、成功编译

你可能感兴趣的:(类型约束)