类型提示只能是对象和数组(自PHP 5.1以来)类型 . 不支持使用int和string的传统类型提示 .
所以你拥有它 . 错误消息并不是真的有用,但我告诉你 .
** 2017年编辑**
有效类型类/接口名称:参数必须是给定类或接口名称的实例 . (自PHP 5.0.0起)self:该参数必须是与定义方法的类相同的实例 . 这只能用于类和实例方法 . (自PHP 5.0.0起)数组:参数必须是数组 . (自PHP 5.1.0起)callable参数必须是有效的callable . PHP 5.4.0 bool:参数必须是布尔值 . (自PHP 7.0.0起)float:参数必须是浮点数 . (自PHP 7.0.0起)int:参数必须是整数 . (自PHP 7.0.0起)string:参数必须是字符串 . (自PHP 7.0.0开始)可迭代:参数必须是数组或Traversable的instanceof . (自PHP 7.1.0起)警告不支持上述标量类型的别名 . 相反,它们被视为类或接口名称 . 例如,使用boolean作为参数或返回类型将需要一个参数或返回值,它是类或接口boolean的实例,而不是类型bool:
function test(boolean $ param){}
测试(真);
?>
上面的例子将输出:致命错误:未捕获TypeError:传递给test()的参数1必须是boolean的实例,给定布尔值,在第1行调用并在 - :1中定义
最后一个警告实际上很重要,以理解错误“类型字符串的参数必须,字符串给出”;因为大多数只允许类/接口名称作为参数类型,PHP试图找到一个类名“string”,但找不到任何因为它是一个基本类型,因此失败了这个尴尬的错误 .