2010-09-30 11 views
8

En Zend Framework, la mayor parte del tiempo para obtener un parámetro, utilizaréZend Framework: ¿Puedo obtener GET params?

// from controller 
$this->getRequest()->getParam('key'); 

pero ¿cómo puedo obtener acaba de obtener params utilizando la forma 'Zend'? ¿O simplemente uso $_GET? ¿Hay alguna diferencia entre

$this->getRequest()->getParam('key'); 

vs

$_GET['key']; 
+0

que en su mayoría sólo tiene que utilizar '$ _GET', '$ this-> getRequest() -> getParams()' que más a menudo utilizo para obtener las variables de la ruta – Hannes

+1

En su clase de controlador, puede usar '$ this -> _ getParam ('key')' en lugar de '$ this-> getRequest() -> getParam ('key')' - es un poco más corto. –

Respuesta

32

Uso getQuery():

$this->_request->getQuery('key'); 

Otros métodos disponibles incluyen

  • getParam()
  • getQuery()
  • getPost()
  • GetCookie()
  • getServer ()
  • getenv()

getParam() cheques usuario params primero, entonces $ _GET, y luego $ _POST, devolviendo la primera se encontró coincidencia o nulo.

Trate de evitar el acceso directo a los superglobales.

12

La diferencia principal es que

$_GET['key']; 

es una dependencia sobre el medio ambiente. Requiere que el superglobal esté disponible y contenga una clave de ese nombre. También es solo un acceso de matriz simple, mientras que

$this->getRequest()->getParam('key'); 

es una llamada al método API. El acceso a la Solicitud se abstrae. No hay dependencia en el entorno real. El objeto Request podría ser un simulacro. El método getParam siempre devolverá un valor independientemente de si es de $_GET o $_POST.

Poner una abstracción en la parte superior de la Solicitud es mejor, ya que permite un mayor desacoplamiento, menos dependencias y, por lo tanto, hace que su aplicación sea más fácil de probar y mantener.

0

Después de estudiar Zend 2's in depth data binding documentation, he encontrado que es mejor acceder a los parámetros de la ruta a través del Params plugin de acceso automático. Utilizando este complemento, puede obtener un parámetro como se muestra a continuación desde dentro de un controlador.

$this->params('key'); 
0

Esto funciona para ZF2

$this->params()->fromQuery('key', 1); // second argument is optional default paramter