В Zend Framework большую часть времени, чтобы получить параметр, я буду использовать
// from controller $this->getRequest()->getParam('key');
но как я могу получить только параметры GET, используя метод «Zend»? Или я просто использую $_GET
? Есть ли разница между
$this->getRequest()->getParam('key');
против
$_GET['key'];
Использовать getQuery()
:
$this->_request->getQuery('key');
Другие доступные методы включают
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