2012-11-22 59 views
0

我最近一直在尋找名字空間。我正在創建一個MVC框架,並希望嘗試轉向PHP 5.3+功能。PHP包含的類是名稱空間還是全局的一部分?

可以說我定義了一個命名空間,稱之爲\ Controller。

然後我想要包含一個文件,其中有一個家庭的類。

namespace Controller; 

include "class.home.php"; 

文件內容:

class.home.php: 

class Home { 
    public function hello() { 
    } 
} 

在這個例子中,將家庭是控制器命名空間的一部分嗎?或全局命名空間的一部分?

我想能夠訪問像new \Controller\Home();這樣的代碼上面的代碼是否會像這樣工作?

回答

1

類的命名空間取決於它所聲明的名稱空間,而不是它所包含的名稱空間。如果後者的情況下,它會是不可能清楚的知道會在什麼命名空間的東西。

如果你沒有在頂部在其中聲明類文件的寫namespace Foo\Bar\Baz;,該類是在全局命名空間中,始終。

0

你的情況,家庭不會是控制器命名空間的一部分,因爲你需要定義像class.home.php內的命名空間:

namespace Controller; 

class Home { 
    public function hello() { 
    } 
} 

而且比你可以:

namespace Controller; 

include "class.home.php"; 

new \Controller\Home(); 
相關問題