Can anyone explain the differences both functionally and in terms of good/bad practice whhy one of these should be preferred over the other:
$getParam = Mage::app()->getRequest()->getParam('getparam');
v
$getParam = $_GET['getparam'];
There is a significant difference between the two. $_GET
is simply an array, like $_POST
. However, calling Mage::app()->getRequest()->getParam('param_name')
will give you access to both GET and POST (DELETE and PUT are not included here) - see code below:
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;
}
In addition, if the system sets other params with Mage::app()->getRequest()->setParam()
, it becomes accessible via the getParam()
function. In Magento you want to always use getParam()
.
Mage::app()->getRequest()->getParam('getparam');
Will return you 'getparam' if it is send with GET, POST (not sure about DELETE, PUT ...) request. Did not work with Magento but if there parameters that sent through routing. I would expect them also being accessible through that function.
$_GET
contains only parameters sent through GET
$_POST
contains only parameters sent through POST
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With