PHP 声明带有本地化字符串值的数组


PHP declaring array with localized string values

专家!

这肯定是一个新手问题,但我坚持我的项目。问题是这样的:声明了一个对象数组,当声明数组时,这些对象应该有一个值。如果值以字符串格式给出,例如"foo bar",则代码工作正常。但是,如果函数设置了值,则相同的数组声明会给我一个错误。

这是代码...

工作正常:

private static $summary_fields = array(
        'Title' => 'Title',
        'Description' => 'Description',
        'SummaryOfPrice' => 'Amount',
        'Country.Title' => 'Country'
    );

工作不正常:

private static $summary_fields = array(
        'Title' => _t('FlatFeeShippingRate.DESCRIPTION', 'Title'),
        'Description' => _t('FlatFeeShippingRate.DESCRIPTION', 'Description'),
        'SummaryOfPrice' => _t('FlatFeeShippingRate.AMOUNT', 'Amount'),
        'Country.Title' => _t('FlatFeeShippingRate.COUNTRY', 'Country')
    );

函数 _t() 这里是本地化字符串的函数。如果从 .yml 语言特定的文件中找不到本地化字符串,它将返回作为第二个参数给出的字符串。

当_t()产生错误时数组声明有什么问题:

Parse error: syntax error, unexpected '(', expecting ')'

其他地方使用_t()函数作为魅力!

请帮忙。

感谢!

从 http://us.php.net/manual/en/language.oop5.static.php:

像任何其他 PHP 静态变量一样,静态属性只能是 使用文字或常量初始化;不允许使用表达式。 因此,虽然您可以将静态属性初始化为整数或数组 (例如),您不能将其初始化为另一个变量,即 函数返回值,或返回对象。

这意味着不能在初始值设定项中使用 _t() 函数。但是,您可以创建一个 getter 函数,如此处的建议。您还可以在创建类初始化数组,此处建议。