1

我在一个带有 yii php 框架的项目中,在 muy 模型中我有一个公共静态数组,其中有一些常量作为索引,如下所示:

const ESTADO_ACTIVA    = 1;
const ESTADO_RECHAZADA = 2;
const ESTADO_ACEPTADA  = 3;
public static $estados = array(
    self::ESTADO_ACTIVA    => 'Activa',
    self::ESTADO_RECHAZADA => 'Rechazada',
    self::ESTADO_ACEPTADA  => 'Aceptada'
);

我需要用这个替换'Activa'

    const ESTADO_ACTIVA    = 1;
const ESTADO_RECHAZADA = 2;
const ESTADO_ACEPTADA  = 3;
public static $estados = array(
    self::ESTADO_ACTIVA    => Yii::t('category','Activa'),
    self::ESTADO_RECHAZADA => Yii::t('category','Rechazada'),
    self::ESTADO_ACEPTADA  => Yii::t('category','Aceptada'),
);

当我尝试它时,我收到此错误:

解析错误:语法错误,意外 '(',期待 ')'

我不明白出了什么问题。谢谢大家。。

4

2 回答 2

1

使用这种 Yii 方式(如在文档中)我将创建 estados 方法:

const ESTADO_ACTIVA    = 1;
const ESTADO_RECHAZADA = 2;
const ESTADO_ACEPTADA  = 3;
public static function estados()
{
    return array(
        self::ESTADO_ACTIVA    => Yii::t('category','Activa'),
        self::ESTADO_RECHAZADA => Yii::t('category','Rechazada'),
        self::ESTADO_ACEPTADA  => Yii::t('category','Aceptada'),
    );
}

这样你就不需要实例化类。

编辑:如果您不想Yii::t在每次调用时进行评估,请使用缓存版本:

const ESTADO_ACTIVA    = 1;
const ESTADO_RECHAZADA = 2;
const ESTADO_ACEPTADA  = 3;

private static $_estados = null;

public static function estados()
{
    if(null === self::$_estados)
    {
        self::$_estados = array(
            self::ESTADO_ACTIVA    => Yii::t('category','Activa'),
            self::ESTADO_RECHAZADA => Yii::t('category','Rechazada'),
            self::ESTADO_ACEPTADA  => Yii::t('category','Aceptada'),
        );
    }
    return self::$_estados;
}

使用这种方法Yii::t,调用只评估一次。

于 2013-05-09T13:38:28.603 回答
0

在 PHP 中,您不能使用非常量表达式初始化数组。调用Yii::t就是这样一个表达式,这意味着您必须$estados在方法体内计算最终形式。

例如,您可以在构造函数中执行此操作:

public static $estados;

public function __construct()
{
    if (!self::$estados) {
        self::$estados = array(
            self::ESTADO_ACTIVA    => Yii::t('category','Activa'),
            self::ESTADO_RECHAZADA => Yii::t('category','Rechazada'),
            self::ESTADO_ACEPTADA  => Yii::t('category','Aceptada'),
        );
    }
}
于 2013-05-09T12:44:22.007 回答