【问题标题】:PHP declaring array with localized string valuesPHP用本地化字符串值声明数组
【发布时间】:2015-03-16 06:25:12
【问题描述】:

专家!

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

这是代码...

工作正常:

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()-function 的魅力!

请帮忙。

谢谢!

【问题讨论】:

  • 不,您不能在属性初始化时使用您的函数。引用手册php.net/manual/en/language.oop5.properties.php 这个声明可能包括一个初始化,但是这个初始化必须是一个常量值——也就是说,它必须能够在编译时被评估,并且不能依赖于运行时信息来排序进行评估。
  • 嗨,鬼!好的...呃..我应该如何将其更改为有效的初始化?
  • 在构造函数中设置
  • 幽灵,感谢您的帮助! :) 我无法将此标记为已接受的答案,因为您将此添加为评论...抱歉。但是您的回答是第一个有用的,谢谢!
  • 没问题,我很高兴这能有所启发

标签: php arrays function object


【解决方案1】:

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

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

这意味着您不能在初始化程序中使用_t() 函数。但是,您可以按照here 的建议创建一个 getter 函数。您也可以在创建类后初始化数组,建议here

【讨论】:

    猜你喜欢
    • 2012-10-22
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 2013-05-25
    • 2023-03-11
    • 2011-07-12
    • 2013-10-22
    • 1970-01-01
    相关资源
    最近更新 更多