繁体   English   中英

PHP:变量中的常量名称

[英]PHP: Constant name from a variable

我有一个看起来像这样的PHP类

class Painter {
    const COLOR_PHYSIC = 'brown';
    const COLOR_PSYCHIC = 'purple';
    const COLOR_ATTACKER = 'dodgerblue';
    const COLOR_DEFENDER = 'darkorange';

    public function __call($name, $arguments) {
        if(defined('self::'.$name)) $name = self::$$name;

        return '<span class="'.$name.'">'.$arguments[0].'</span>';
    }
}

返回字符串的彩色html表示形式。 用法示例:

$painter->red('Text'); // <span class="red">Text</span>

我还希望有一些可以在将来更改的预设颜色,如果需要的话,这就是我要坚持的地方。

如果我跑这条线

$painter->COLOR_DEFENDER('Text');

我收到错误消息

访问未声明的静态属性:Painter :: $ COLOR_DEFENDER

如何修改代码,以便可以将$name解释为常量?

另外,我很想知道,如果我要更改将预设颜色存储到数组而不是常量的方法,那会不会使用更少的内存? 如果更熟悉幕后PHP的人可以回答这个问题,我将非常高兴。 提前致谢!

if (defined('self::' . $name)) {
    $name = constant('self::' . $name);
}

要动态检索常量,您需要使用constant函数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM