Magento getParam v $ _GET

Может ли кто-либо объяснить различия как функционально, так и с точки зрения хорошей / плохой практики, в то время как одно из них должно быть предпочтительным по сравнению с другим:

$getParam = Mage::app()->getRequest()->getParam('getparam'); 

v

 $getParam = $_GET['getparam']; 

Между ними существует значительная разница. $_GET – это просто массив, например $_POST . Однако вызов Mage::app()->getRequest()->getParam('param_name') даст вам доступ к GET и POST (DELETE и PUT здесь не включены) – см. Mage::app()->getRequest()->getParam('param_name') код:

 lib/Zend/Controller/Request/Http.php public function getParam($key, $default = null) { $keyName = (null !== ($alias = $this->getAlias($key))) ? $alias : $key; $paramSources = $this->getParamSources(); if (isset($this->_params[$keyName])) { return $this->_params[$keyName]; } elseif (in_array('_GET', $paramSources) && (isset($_GET[$keyName]))) { return $_GET[$keyName]; } elseif (in_array('_POST', $paramSources) && (isset($_POST[$keyName]))) { return $_POST[$keyName]; } return $default; } 

Кроме того, если система задает другие параметры с помощью Mage::app()->getRequest()->setParam() , она становится доступной через getParam() . В Magento вы хотите всегда использовать getParam() .

 Mage::app()->getRequest()->getParam('getparam'); 

Вернет вам «getparam», если он отправляет запрос GET, POST (не уверен в DELETE, PUT …). Не работает с Magento, но если есть параметры, которые отправляются через маршрутизацию. Я ожидаю, что они также будут доступны через эту функцию.

$_GET содержит только параметры, отправленные через GET

$_POST содержит только параметры, отправленные через POST