我刚刚更新了我的应用程序,使用php7 typehints作为标量类型。当我运行我的单元测试时,我收到了这个错误:
PHP致命错误:具有类类型的参数的默认值在第23行的xxx.php中只能为NULL
错误在于此功能:
public function call(string $url, integer $timeout = 30)
{
// some code...
}
如果我将integer
替换为int
,则错误消失。我总是听说int和integer是一样的我在文档中看不到任何与此相关的内容...
php错误似乎表示整数是一个类而不是标量类型。
此外,((int) 1) === ((integer) 1)
返回true,再次表明int和integer是相同的
我使用的是php 7.0.8
答案 0 :(得分:12)
根据文档,这些是有效的类型:
Class/interface name
self
array
callable
bool
float
int
string
还有这个:
警告
不支持上述标量类型的别名。相反,他们 被视为类或接口名称。例如,使用boolean as 参数或返回类型将需要参数或返回值 这是类或接口boolean的实例,而不是 输入bool。
来源:http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration