如何使用变量名声明一个php类

时间:2011-09-15 22:47:39

标签: 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

非常感谢你的帮助

2 个答案:

答案 0 :(得分:7)

当然,使用php写入具有所需名称的文件,然后需要该文件。您也可以使用eval,例如类似于:eval("class $myname { ... };");

对于更复杂的情况,请使用Zend的CodeGenerator等库(例如here)。

答案 1 :(得分:0)

请不要上传/下注此回复或将其标记为答案。

Eugen Rieck's answer是最好的一个,但被置于评论中。

The answer he linked to显示了如何使用class_alias()将类命名为define。如果您正在编写库类并希望让用户为其命名,例如通过在配置文件中设置define,这将非常有用。

因此,如果您正在编写一个包含MyLibraryClass的库,您可以让用户将其命名为LC之类,以便简洁,这样他们就可以编写LC :: someFunction()或LC-> someFunction而不必编写整个事物进行。