PHP 5.3 доступ к ключу массива из объекта getter

У меня есть форма $ 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?

Related of "PHP 5.3 доступ к ключу массива из объекта getter"

Разрушение разворота, как описано в вопросе, является функцией, которая была добавлена ​​только в PHP 5.4. PHP 5.3 не может этого сделать.

 echo $form->fields()['fieldname'] 

Таким образом, этот код будет работать в PHP 5.4 и выше.

Чтобы выполнить эту работу в PHP 5.3, вам необходимо выполнить одно из следующих действий:

  1. Используйте временную переменную:

     $temp = $form->fields() echo $temp['fieldname']; 
  2. Вывести массив полей как свойство объекта, а не из метода:
    т.е. это ….

     echo $form->fields['fieldname'] 

    … отлично.

  3. Или, конечно же, вы можете обновить свой сервер до 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 нет другого выбора.