2013-02-05 48 views
0

我剛剛遇到以下問題。我試圖建立一個班,但它不工作。當我構造類時,它使用名稱空間和變量,因爲變量必須放在反斜槓後面(對於名稱空間),所以會出現錯誤。 下面是定義類的示例代碼;PHP構造類(變量和命名空間)的問題

$className = 'Help'; 
$controller = new \controller\$className; 

類名在變量中定義,在上面的示例代碼中,我將其設置爲'Help'。在構建類時,它前面有\controller\,這是因爲它在該名稱空間中。如果我刪除命名空間的東西,所以它只是;

$controller = new $className; 

它的工作。這個問題可能是由於在包含要構造的類名的變量前面有一個反斜槓。我無法在代碼的開頭添加use controller;,因爲包含該類的文件在構造函數中加載,並且該類在文件加載後立即構造。 use函數只能用於文件的開頭,而不是在方法內部,我想。

我希望有人能幫助我。

由於提前, 添VISEE

回答

3

你的第一個例子是無效的語法。您需要,而不是像這樣:

$className = '\controller\Help'; 
$controller = new $className(); 
3

設置完全限定類名的變量,並用它來實例化一個新的對象:

$className = '\controller\Help'; 
$controller = new $className;