Подтвердить что ты не робот

Magento getParam v $_GET

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

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

v

$getParam = $_GET['getparam'];
4b9b3361

Ответ 1

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

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().

Ответ 2

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

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

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

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