web-dev-qa-db-fra.com

Magento getParam v $ _GET

Quelqu'un peut-il expliquer les différences fonctionnelles et en termes de bonnes/mauvaises pratiques pourquoi l'une d'elles devrait être préférée à l'autre:

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

v

$getParam = $_GET['getparam'];
24
Marty Wallace

Il y a une différence significative entre les deux. $_GET Est simplement un tableau, comme $_POST. Cependant, appeler Mage::app()->getRequest()->getParam('param_name') vous donnera accès à la fois à GET et POST (DELETE et PUT ne sont pas inclus ici) - voir le code ci-dessous:

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;
}

De plus, si le système définit d'autres paramètres avec Mage::app()->getRequest()->setParam(), il devient accessible via la fonction getParam(). Dans Magento, vous souhaitez toujours utiliser getParam().

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

Vous renverra "getparam" s'il est envoyé avec GET, POST (pas sûr de DELETE, PUT ...). Ne fonctionne pas avec Magento mais s'il y a des paramètres qui sont envoyés via le routage. Je m'attendrais à ce qu'ils soient également accessibles via cette fonction.

$_GET contient uniquement les paramètres envoyés via GET

$_POST contient uniquement les paramètres envoyés via POST

6
E_p