Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用本地化字符串值声明数组的PHP_Php_Arrays_Function_Object - Fatal编程技术网

使用本地化字符串值声明数组的PHP

使用本地化字符串值声明数组的PHP,php,arrays,function,object,Php,Arrays,Function,Object,专家们 这当然是一个新手问题,但我仍然坚持我的项目。问题是:声明了一个对象数组,并且在声明数组时这些对象应该有一个值。如果值是以字符串格式给出的,例如“foobar”,则代码工作正常。但是,如果值是由函数设置的,则同一数组声明会给我一个错误 这是密码 工作正常: private static $summary_fields = array( 'Title' => 'Title', 'Description' => 'Description',

专家们

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

这是密码

工作正常:

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()-函数的作用相当于魅力

请帮忙

谢谢

来自:

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


这意味着您不能在初始值设定项中使用
\u t()
函数。但是,您可以按照建议创建一个getter函数。您还可以在创建类后初始化数组,建议这样做。

否,您不能在属性初始化时使用函数。引用手册时,此声明可能包括初始化,但此初始化必须是一个常量值——也就是说,它必须能够在编译时进行计算,并且不能依赖于运行时信息才能进行计算。嗨,ghost!可以呃。。我应该如何将其更改为有效的初始化?在constructorGhost中设置它,谢谢您的帮助!:)我无法将此标记为已接受的答案,因为您将此添加为注释。。。很抱歉但是你的回答是第一个有用的,谢谢!没问题,我很高兴这件事说明了一些问题