为什么stdClass是命名空间的?

时间:2012-10-08 12:07:19

标签: php namespaces stdclass

  

传递给nms \ aclass :: __ construct()的参数1必须是一个实例   of nms \ stdClass,stdClass的实例给出

__construct()函数看起来像public function __construct(stdClass $aclass)

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

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

但我没有得到的是为什么?我认为甚至不可能覆盖stdClass呢?那么\stdClass\nms\stdClass之间有什么区别?

1 个答案:

答案 0 :(得分:3)

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

namespace Example;

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

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

输出:

Overridden!

因此,如果您需要原始文件,则需要使用/stdClass全局命名空间。与/Exception s非常相似。