views:

97

answers:

2

In Zend Framework, most of the time to get a param, i will use

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

but how can i get just GET params using the 'Zend' way? Or do i just use $_GET? Is there any difference between

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

vs

$_GET['key'];
+3  A: 

The main difference is that

$_GET['key'];

is a dependency on the environment. It requires the superglobal to be available and containing a key of that name. It's also just a simple array access, while

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

is an API method call. Access to the Request is abstracted. There is no dependency on the actual environment. The Request object could be a mock. The getParam method will always return a value regardless whether it is from $_GET or $_POST.

Putting an abstraction on top of the Request is better, because it allows for more decoupling, less dependencies and therefor makes your application easier to test and maintain.

Gordon
+3  A: 

Use getQuery():

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

Other methods available include

  • getParam()
  • getQuery()
  • getPost()
  • getCookie()
  • getServer()
  • getEnv()

getParam() checks user params first, then $_GET, and then $_POST, returning the first match found or null.

Try to avoid accessing the superglobals directly.

Ryan Chouinard