php - stdClass 和类型提示

标签 php

$obj = new stdClass();
echo gettype($obj); //object

function abc(object $obj) {
    return;
}

abc($obj); //Catchable fatal error: Argument 1 passed to abc() must be an instance of object, instance of stdClass given

为什么调用 abc($obj) 会触发错误?

Catchable fatal error: Argument 1 passed to abc() must be an instance of object, instance of stdClass given

最佳答案

因为类型提示仅适用于类名、接口(interface)名或数组。在 php 对象模型中没有共同的祖先 object(就像在其他一些编程语言中,如 C#)。您必须指定的是 stdClass

截至php 7.2现在可以完全按照您在问题中猜测的方式使用 object 类型提示:

function abc(object $obj) {
    return;
}

关于php - stdClass 和类型提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13287593/

相关文章:

java - 如何截取网站的全屏截图

php - SQL 注入(inject) : Which statement can prevent better SQL injection

php - HTML 表单不使用 PHP 将数据发送到 MySQL

php - 删除后显示一行的值

php - ajax中的删除功能不起作用

php - 如何从 MySQL 数据库向 PHP 显示原始值

php - 带有 JSON 和 PHP 的动态行不会输出数据

php - 压缩主文件夹,里面有子文件夹

php - 如何使用 PHP 将 Excel 或 CSV 上传到 MySQL 数据库?

php - 更改包的 Composer git 源