0

最近、名前空間について調べています。私は MVC フレームワークを作成しており、PHP 5.3 以降の機能に移行したいと考えています。

名前空間を定義し、\Controller とします。

次に、Home のクラスを持つファイルを含めたいと思います。

namespace Controller;

include "class.home.php";

ファイルの内容:

class.home.php:

class Home {
    public function hello() {
    }
}

この例では、Home は Controller 名前空間の一部になりますか? またはグローバル名前空間の一部ですか?

上記のコードはそのように機能しますnew \Controller\Home();か?

4

2 に答える 2

1

クラスの名前空間は、クラスが含まれていた名前空間ではなく、宣言された名前空間に依存します。後者の場合、何かがどの名前空間にあるのかを明確に知ることは不可能です.

class を宣言するファイルnamespace Foo\Bar\Baz;の先頭に記述しなかった場合、クラスは常にグローバル名前空間にあります。

于 2012-11-22T09:32:10.803 に答える
0

あなたの場合、次のように class.home.php 内で名前空間を定義する必要があるため、 Home は Controller 名前空間の一部にはなりません。

namespace Controller;

class Home {
    public function hello() {
    }
}

そして、あなたができるよりも:

namespace Controller;

include "class.home.php";

new \Controller\Home();
于 2012-11-22T10:14:09.883 に答える