Zend clear Параметры запроса - PullRequest
       12

Zend clear Параметры запроса

2 голосов
/ 27 сентября 2011

Я просто хотел спросить, почему следующее внутри метода действия Zend_Controller_Action:

$request = $this->getRequest();
$params = $request->getParams();
var_dump($params);
foreach ($params as $key => &$value) {
    $value = null;
}
var_dump($params);
$request->setParams($params);
var_dump($request->getParams());

производит это:

array
  'controller' => string 'bug' (length=3)
  'action' => string 'edit' (length=4)
  'id' => string '210' (length=3)
  'module' => string 'default' (length=7)
  'author' => string 'test2' (length=5)

array
  'controller' => null
  'action' => null
  'id' => null
  'module' => null
  'author' => null

array
  'author' => string 'test2' (length=5)

Разве переменная 'author' не должна быть очищена тоже?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 08 мая 2012

Чтобы очистить параметры, вы можете просто позвонить:

$request->clearParams(); 
1 голос
/ 27 сентября 2011

Метод getParams показан ниже.Что происходит, вы очищаете встроенные параметры (контроллер, действие и т. Д.), Но метод всегда возвращает переменные GET и POST.

/**
 * Retrieve an array of parameters
 *
 * Retrieves a merged array of parameters, with precedence of userland
 * params (see {@link setParam()}), $_GET, $_POST (i.e., values in the
 * userland params will take precedence over all others).
 *
 * @return array
 */
public function getParams()
{
    $return       = $this->_params;
    $paramSources = $this->getParamSources();
    if (in_array('_GET', $paramSources)
        && isset($_GET)
        && is_array($_GET)
    ) {
        $return += $_GET;
    }
    if (in_array('_POST', $paramSources)
        && isset($_POST)
        && is_array($_POST)
    ) {
        $return += $_POST;
    }
    return $return;
}
...