Zend Framework: могу ли я просто получить параметры GET?

В Zend Framework большую часть времени, чтобы получить параметр, я буду использовать

// from controller $this->getRequest()->getParam('key'); 

но как я могу получить только параметры GET, используя метод «Zend»? Или я просто использую $_GET ? Есть ли разница между

 $this->getRequest()->getParam('key'); 

против

 $_GET['key']; 

Related of "Zend Framework: могу ли я просто получить параметры GET?"

Использовать getQuery() :

 $this->_request->getQuery('key'); 

Другие доступные методы включают

  • GetParam ()
  • GetQuery ()
  • getPost ()
  • getCookie ()
  • getServer ()
  • GETENV ()

getParam() сначала проверяет параметры пользователя, затем $ _GET, а затем $ _POST, возвращая первое найденное совпадение или null.

Старайтесь избегать прямого доступа к суперглобалам.

Основное различие заключается в том, что

 $_GET['key']; 

является зависимостью от окружающей среды. Это требует, чтобы суперглобал был доступен и содержал ключ от этого имени. Это просто простой доступ к массиву, в то время как

 $this->getRequest()->getParam('key'); 

это вызов метода API. Доступ к запросу абстрагируется. От реальной среды не зависит. Объект Request может быть макетным. Метод getParam всегда будет возвращать значение независимо от того, находится ли он от $_GET или $_POST .

Помещение абстракции поверх запроса лучше, потому что оно позволяет больше развязки, меньше зависимостей и поэтому упрощает тестирование и обслуживание вашего приложения.

После изучения документации по привязке данных Zend 2 я обнаружил, что лучше всего получить доступ к параметрам из маршрута через автоматически доступный плагин Params . Используя этот плагин, вы можете получить параметр, как показано ниже, внутри контроллера.

 $this->params('key'); 

Это работает для ZF2

 $this->params()->fromQuery('key', 1); // second argument is optional default paramter