这是我的代码:
function phpwtf(string $s) { echo "$s\n"; } phpwtf("Type hinting is da bomb");
导致此错误:
可捕获的致命错误:传递给 phpwtf() 的参数 1 必须是字符串的实例,给定的字符串
看到 PHP 同时识别和拒绝所需的类型,这不仅仅是一点奥威尔式的。 有五盏灯,该死的。
PHP中字符串的类型提示等价物是什么?对确切解释这里发生的事情的答案的额外考虑。
在 PHP 7 之前,类型提示只能用于强制对象和数组的类型。标量类型不是类型提示的。在这种情况下,需要一个类的对象string,但你给它一个 (scalar) string。错误消息可能很有趣,但它不应该一开始就起作用。鉴于动态类型系统,这实际上具有某种变态的意义。
string
您只能 手动 “输入提示”标量类型:
function foo($string) { if (!is_string($string)) { trigger_error('No, you fool!'); return; } ... }