2011-09-15 12 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而不必写整个东西出。