这是我的代码:

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

这会导致此错误:

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

看到PHP同时识别和拒绝所需的类型,简直有点奥威尔式的感觉.There are five lights, damn it.

PHP中字符串的类型暗示的类似功能是什么?对答案的额外考虑正好解释了这里发生的事情.

推荐答案

PHP7type hinting之前的版本只能用于强制对象和数组的类型.标量类型不是类型表.在本例中,需要类string的对象,但您给它一个(标量)string.错误消息可能很有趣,但一开始就不应该起作用.考虑到动态打字系统,这实际上有点反常.

您只能使用manually个"type hint"标量类型:

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

Php相关问答推荐

Laravel 11 api资源PUT请求模型没有查询结果

WordPress:将自定义单选输入字段添加到用户配置文件

中继器内置中继器的ACF WordPress组

用于计算付款费用的WooCommerce管理编辑产品中的自定义复选框

PHP-带POST验证的for循环

不包括WooCommerce中单独销售的产品

使用php创建表格和插入数据

使用MySQLi使用连接字符串设置字符集

在WooCommerce获取所有具有全球产品属性品牌的简单产品

在WooCommerce上克隆订单时使用`add_product()`添加产品元数据

HTAccess重写一些URL,但将所有其他URL发送到另一个页面

随机显示WordPress快捷代码功能时出现问题

execute_query 和prepare+execute 有什么区别?

在 WooCommerce 更新结帐事件上动态更新自定义内容

如何在 Laravel 迁移中使用日期时间和天数?

调度程序不发送任何消息

无法使用 slim 的父级容器

Laravel的Storage::exists返回false,而file_exists返回true.

在 Laravel、Vuejs 和 Inertia 中配置 TypeScript 的问题

我需要获取传递到这个数组中的数据,但我没有得到它,因为在 Laravel 中数组是这样出现的