У меня есть форма $ form формы. Одной из его переменных является объект Field, который представляет все поля и представляет собой массив (например, $this->field['fieldname']
). Получатель $form->fields()
.
Чтобы получить доступ к определенному методу поля (например, для его использования или нет), я использую $form->fields()['fieldname']
который работает на localhost с помощью wamp, но на сервере выдает эту ошибку:
Parse error: syntax error, unexpected '[' in (...)
У меня PHP 5.3 на сервере, и поскольку я переустановил wamp и забыл изменить его обратно на 5.3, wamp запускает PHP 5.4. Поэтому я думаю, что это причина ошибки.
Как я могу получить доступ к методу объекта, который возвращает массив, с помощью ключа массива с PHP 5.3?
Разрушение разворота, как описано в вопросе, является функцией, которая была добавлена только в PHP 5.4. PHP 5.3 не может этого сделать.
echo $form->fields()['fieldname']
Таким образом, этот код будет работать в PHP 5.4 и выше.
Чтобы выполнить эту работу в PHP 5.3, вам необходимо выполнить одно из следующих действий:
Используйте временную переменную:
$temp = $form->fields() echo $temp['fieldname'];
Вывести массив полей как свойство объекта, а не из метода:
т.е. это ….
echo $form->fields['fieldname']
… отлично.
Или, конечно же, вы можете обновить свой сервер до PHP 5.4. Имейте в виду, что 5.3 будет объявлен в конце срока службы относительно скоро, теперь, когда 5.5 был выпущен, так что вам все равно захочется обновляться в любом случае; может быть, это ваш реплик? (и не беспокойтесь об этом, путь обновления от 5.3 до 5.4 довольно прост, нет ничего действительно, что сломается, кроме вещей, которые были устаревшими в любом случае)
Разрушение массива возможно с PHP 5.4, а не 5.3
PHP.net:
Начиная с PHP 5.4, можно массировать разыменовывать результат вызова функции или метода напрямую. До этого было возможно только использование временной переменной.
Как упоминалось разыменование разметки, возможно только в 5.4 или выше. Но вы можете сохранить объект, а затем получить доступ к полям:
$fields=$form->fields(); $value=$fields['fieldname'] ...
AFAIK нет другого выбора.