Magento getParam v $ _GET

Mar*_*ace 24 php magento

任何人都可以在功能上和好/坏实践中解释这些差异,因为其中一个应优先于另一个:

$getParam = Mage::app()->getRequest()->getParam('getparam');
Run Code Online (Sandbox Code Playgroud)

v

$getParam = $_GET['getparam'];
Run Code Online (Sandbox Code Playgroud)

Jos*_*ter 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;
}
Run Code Online (Sandbox Code Playgroud)

此外,如果系统设置其他参数,则可Mage::app()->getRequest()->setParam()通过该getParam()功能访问.在Magento你想要永远使用getParam().

  • 还可以访问从URL解析的params,例如site.com/foo/bar/baz/bip/bop/boom/bum会有params bip = bop和boom = bum (2认同)

E_p*_*E_p 6

Mage::app()->getRequest()->getParam('getparam');
Run Code Online (Sandbox Code Playgroud)

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

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

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