使用定义的常量来创建对象

时间:2012-05-14 16:01:00

标签: php

任意PHP问题,出于好奇而多/少。如果这是一个愚蠢的问题,我道歉。

$class  = 'ClassName';
$object = new $class();

$object = $class::functionName();

这显然有效。

define(CLASS, 'ClassName');
$object = new CLASS();

$object = CLASS::functionName();

这不起作用。

只是想知道是否可以使用定义的常量来创建新对象。如果没有,我明白为什么。

1 个答案:

答案 0 :(得分:3)

嗯,你可以这样做:

define(MYCLASS, 'ClassName');
$class = MYCLASS;
$object = new $class();

...但据我所知,您不能像new MYCLASS()那样直接使用常量,因为它当然会查找名为MYCLASS的类。

附注:您不能拥有名称与保留字冲突的常量,例如classfunction,即使它们是大写的。

如果由于某种原因你做了很多事情,你可以做一些像这样的傻事:

function newClass($str, $args = NULL) {
    return new $str($args);
}
$class = newClass(MYCLASS);

...但我不是真的推荐它。我也猜测你可能不需要这么多常数,或者有一种更优雅的方式去做你不会涉及常数的事情。< / p>