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