我有一个类(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"]);
答案 0 :(得分:1)
如上所述,你无法运行那样的计算 -
此外,由于您必须进行一些计算才能获得该属性,从技术上讲,它实际上并不是常量值常量 -
所以,我建议你这样做:
class MetricUnit {
public static $SIZE;
public static getSize(){
return self::$SIZE ? : self::$SIZE = array(
"value" => 0,
"text" => Yii::t("app", "Size")
);
}
}