小编典典

如何在 PHP 7 之前解决“必须是字符串的实例,给定的字符串”?

all

这是我的代码:

function phpwtf(string $s) {
    echo "$s\n";
}
phpwtf("Type hinting is da bomb");

导致此错误:

可捕获的致命错误:传递给 phpwtf() 的参数 1 必须是字符串的实例,给定的字符串

看到 PHP 同时识别和拒绝所需的类型,这不仅仅是一点奥威尔式的。 有五盏灯,该死的。

PHP中字符串的类型提示等价物是什么?对确切解释这里发生的事情的答案的额外考虑。


阅读 66

收藏
2022-06-15

共1个答案

小编典典

在 PHP 7
之前,类型提示只能用于强制对象和数组的类型。标量类型不是类型提示的。在这种情况下,需要一个类的对象string,但你给它一个
(scalar) string。错误消息可能很有趣,但它不应该一开始就起作用。鉴于动态类型系统,这实际上具有某种变态的意义。

您只能 手动 “输入提示”标量类型:

function foo($string) {
    if (!is_string($string)) {
        trigger_error('No, you fool!');
        return;
    }
    ...
}
2022-06-15