任意PHP问题,出于好奇而多/少。如果这是一个愚蠢的问题,我道歉。
$class = 'ClassName';
$object = new $class();
或
$object = $class::functionName();
这显然有效。
define(CLASS, 'ClassName');
$object = new CLASS();
或
$object = CLASS::functionName();
这不起作用。
只是想知道是否可以使用定义的常量来创建新对象。如果没有,我明白为什么。
答案 0 :(得分:3)
嗯,你可以这样做:
define(MYCLASS, 'ClassName');
$class = MYCLASS;
$object = new $class();
...但据我所知,您不能像new MYCLASS()
那样直接使用常量,因为它当然会查找名为MYCLASS
的类。
附注:您不能拥有名称与保留字冲突的常量,例如class
或function
,即使它们是大写的。
如果由于某种原因你做了很多事情,你可以做一些像这样的傻事:
function newClass($str, $args = NULL) {
return new $str($args);
}
$class = newClass(MYCLASS);
...但我不是真的推荐它。我也猜测你可能不需要这么多常数,或者有一种更优雅的方式去做你不会涉及常数的事情。< / p>