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グローバル名前空間を使用する必要があります。sとよく似てい/Exceptionます。

于 2012-10-08T13:02:45.590 に答える