簡體   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