1

传递给 nms\aclass::__construct() 的参数 1 必须是 nms\stdClass 的实例,给定的 stdClass 的实例

__construct()功能看起来像public function __construct(stdClass $aclass)

我得到了错误,我从全局命名空间中传入了一个 stdClass 的实例,而不是来自同一个命名空间中的一个实例,

我也得到了解决方案:public function __construct(\stdClass $aclass)

但我不明白为什么?我认为甚至不可能覆盖 stdClass 是吗?\stdClass那么和有什么区别\nms\stdClass

4

1 回答 1

3

当然可以stdClass在命名空间内覆盖。

namespace Example;

class stdClass {
    public function __construct() {
        echo "Overridden!";
    }
}

$global = new \stdClass();
$local = new stdClass;

输出:

Overridden!

因此,如果您想要原始文件,则需要使用/stdClass全局命名空间。很像/Exceptions。

于 2012-10-08T13:02:45.590 回答