2011-09-15 31 views
5

有沒有在PHP
的方式使用可變
即聲明一個類(這不工作 - 但它在這裏給你,我打算一個想法):如何聲明一個PHP類變量名

$myname = "the_class"; 
class $myname { 
... 
} 

我也嘗試:

define("MYNAME","the_class"); 
class MYNAME{ 
... 
} 

和我想:

$myname = "the_class"; 
class $$myname { 
... 
} 

這並不真正幫助:
http://php.net/manual/en/language.variables.scope.php

也沒有這樣的:
http://us3.php.net/manual/en/keyword.class.php

非常感謝您的幫助

+12

爲什麼在地球上你想這樣做? – NullUserException

+0

也許如果您告訴我們您打算如何處理它,我們可能會找到一個更好的方法來實現您的最終目標。我無法想象爲什麼需要這樣做的原因... – Dan

+0

我看起來你正在將$ myname定義爲一個字符串,而不是一個類。一個變量可以指向兩個對象嗎?這就像一個(數學)函數1x - > 2ys –

回答

7

當然,使用PHP寫信給你想要的名稱的文件,然後需要該文件。您也可以使用eval,例如例如:eval("class $myname { ... };");

對於更復雜的情況,請使用庫(如Zend的CodeGenerator(示例here))。

0

請勿上/下投票回覆或將其標記爲答案。

Eugen Rieck's answer是最好的,但埋在評論。

The answer he linked to顯示如何使用class_alias()將類命名爲define。如果您正在編寫一個庫類並希望讓用戶將其命名爲任何他們想要的名稱,例如通過在配置文件中設置一個定義,這將非常有用。

所以,如果你正在編寫一個包含MyLibraryClass的庫,你可以讓用戶把它命名爲LC之類的簡潔內容,這樣他們就可以編寫LC :: someFunction()或者LC-> someFunction而不必寫整個東西出。