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