Opencart 中需要标识符的语法错误
Syntax error expecting identifier in Opencart
我只是在检查 opencart 的购物车控制器的功能。我在哪里看到
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$this->{'model_total_' . $result['code']}->getTotal($total_data, $total, $taxes);
}
}
它工作正常。但是当我把它改成
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$this->'model_total_' . $result['code']->getTotal($total_data, $total, $taxes);
}
}
它给我一个错误 Parse error: syntax error, unexpected ''model_total_''
。我不知道为什么会这样。它是否指相同或不同。如果不是那么为什么我必须为此使用花括号 $this->{'model_total_' . $result['code']}
。谁能解释一下。
那里不接受你的结果的串联,所以试试这个,
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$code = 'model_total_' . $result['code'];
$this->$code->getTotal($total_data, $total, $taxes);
}
}
或
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$this->{'model_total_' . $result['code']}->getTotal($total_data, $total, $taxes); // wrap with {}
}
}
编辑
当您使用数组元素进行串联时,需要用 {}
包裹。
$this->'model_total_' . $result['code']->getTotal($total_data, $total, $taxes);
^ ^
您正在使用数组元素进行串联,因此出现错误。
您甚至可以注意到我的第一个示例在没有 {}
的情况下也能正常工作,因为它是普通变量。
如果要使用表达式作为 属性 名称,则必须将其放在 {}
中,除非它只是一个变量。
我只是在检查 opencart 的购物车控制器的功能。我在哪里看到
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$this->{'model_total_' . $result['code']}->getTotal($total_data, $total, $taxes);
}
}
它工作正常。但是当我把它改成
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$this->'model_total_' . $result['code']->getTotal($total_data, $total, $taxes);
}
}
它给我一个错误 Parse error: syntax error, unexpected ''model_total_''
。我不知道为什么会这样。它是否指相同或不同。如果不是那么为什么我必须为此使用花括号 $this->{'model_total_' . $result['code']}
。谁能解释一下。
那里不接受你的结果的串联,所以试试这个,
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$code = 'model_total_' . $result['code'];
$this->$code->getTotal($total_data, $total, $taxes);
}
}
或
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$this->{'model_total_' . $result['code']}->getTotal($total_data, $total, $taxes); // wrap with {}
}
}
编辑
当您使用数组元素进行串联时,需要用 {}
包裹。
$this->'model_total_' . $result['code']->getTotal($total_data, $total, $taxes);
^ ^
您正在使用数组元素进行串联,因此出现错误。
您甚至可以注意到我的第一个示例在没有 {}
的情况下也能正常工作,因为它是普通变量。
如果要使用表达式作为 属性 名称,则必须将其放在 {}
中,除非它只是一个变量。