25

任何人都可以解释功能上和好/坏实践方面的差异,为什么其中一个应该优于另一个:

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

v

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

2 回答 2

39

两者之间存在显着差异。$_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().

于 2012-11-23T18:10:28.637 回答
6
Mage::app()->getRequest()->getParam('getparam');

如果使用 GET、POST(不确定 DELETE、PUT ...)请求发送,将返回“getparam”。不适用于 Magento,但如果有通过路由发送的参数。我希望它们也可以通过该功能访问。

$_GET仅包含通过 GET 发送的参数

$_POST仅包含通过 POST 发送的参数

于 2012-11-23T18:06:26.917 回答