来自表达式的PHP const

时间:2015-06-24 19:23:45

标签: php yii2

我有一个类(MetricUnits),如下所示:

class MetricUnit {
    const SIZE = [
        "value" => 0,
        "text" => Yii::t("app", "Size")
    ];
}

Yii::t是一个i18n函数。 正如您现在想的那样,这是无效的,因为PHP不允许在const中使用表达式。

我如何避免这种限制,以便获得该缺点的文本?

顺便说一下,Yii::t不接受任何非字符串值,甚至不接受const值,所以我不能做类似的事情:

class MetricUnit {
    const SIZE = [
        "value" => 0,
        "text" => "Size"
    ];
}

Yii::t("app", MetricUnit::SIZE["text"]);

1 个答案:

答案 0 :(得分:1)

如上所述,你无法运行那样的计算 -

此外,由于您必须进行一些计算才能获得该属性,从技术上讲,它实际上并不是常量值常量 -

所以,我建议你这样做:

class MetricUnit {

     public static $SIZE;

     public static getSize(){
          return self::$SIZE ? : self::$SIZE = array(
             "value" => 0,
             "text" => Yii::t("app", "Size")
         );
     }

}