PHP 5.6版。代码:
protected $siteServices = [
1 => [
'title' => 'Consulting',
'key' => 'service',
'description' => '',
'file' => asset('assets/img/sample/image1.jpg'), // throws error on this line
],
];
错误: PHP Parse error: syntax error, unexpected '(', expecting ']'
对此可以解决什么问题?
修改
通过在运行函数中移动变量而不是使其变为protected
来解决。也可以通过先声明空变量然后在__constructor()
答案 0 :(得分:0)
可以用不同的方式完成它。我列出了两种不同的方法。
第一种方法
protected $siteServices = [
1 => [
'title' => 'Consulting',
'key' => 'service',
'description' => '',
'file' => ['asset', 'assets/img/sample/image1.jpg'] // throws error on this line
]
];
我用一个分配给该数组中文件密钥的数组替换了函数调用。那么,现在,您想知道如何调用资产功能,是吗?这很简单。
在循环遍历该数组时,您可以这样做:
call_user_func($siteServices[1]['file'][0], $siteServices[1]['file'][1]);
那么,我们在这做什么?
首先,我们将一个数组设置为文件键,其中数组的第一个元素是函数的名称,而另一个元素是需要传递给先前定义的函数的参数的值。
因此,使用PHP的call_user_func
函数,您可以调用函数给出它们的名称和参数。我希望这会帮助你。
第二种方法
我很确定你会为这个属性设置一个setter函数。因此,您可以这样做:
public function setSiteService($title, $key, $description, $file)
{
$file = asset($file);
$service = [
'title' => $title,
'key' => $key,
'description' => $description,
'file' => $file
];
$this->siteServices[] = $service;
}
因此,setter为您完成处理部分。硬编码阵列根本不是一个好主意,你应该通过某种机制来填充。