-- Shekar C Reddy <[EMAIL PROTECTED]> wrote (on Wednesday, 21 March 2007, 09:34 PM -0400): > 1. Perhaps, the setParam() method could be enhanced to unset/blow-off the key > if the value passed is null... We don't want any keys with null values > lingering around - that would increase complexity as we have to deal with null > values! I know getParam() returns default null if the key does not exist but > when I invoke getAllParams() to traverse the array, I may end up with some > keys > that have null values :( Or maybe, with a third/default $unset argument if > the > value passed is null, like so: > > Signature: _setParam( $key, $value, $unset = false ) > Usage: _setParam( $key, null, true ) > > [if $value = null && $unset = true, blow off the key]
Good plan. I'll implement this soon. > 2. Understandable. I did not request to eliminate the > getRequest/getResponse methods - they are there to serve as an API to > external objects. What I was referring to was invoking of these > methods inside Zend_Controller_Action class script to access the > protected request/response vars that are declared/defined right inside > the same class. That would degrade performance (you may try > load-testing the application). These vars could, instead, be accessed > directly inside Zend_Controller_Action script: > > Eg: $this->_request->setParam( ... ) The point of accessors is to normalize access to properties. Using the properties directly within methods such as render(), _forward(), etc. could cause issues later for those who *do* override the getRequest()/getResponse() accessors -- basically, we'd be breaking *other* people's apps. As a performance optimization, typically what I do is, if needing the property more than once, I grab it like this: $request = $this->getRequest(); which will cut down on the number of times it's retrieved by the accessor. This is the only concession I'll make in this regard. > > On 3/21/07, Matthew Weier O'Phinney <[EMAIL PROTECTED] > wrote: > > -- Shekar C Reddy < [EMAIL PROTECTED]> wrote > (on Wednesday, 21 March 2007, 06:00 AM -0400): > > 1. There is no method to unset a param in action controller or its > request > > class. We need a unsetParam() method in action/request. > > You can always pass a null to setParam(): > > $this->setParam('someKey', null); > > The controller parameters are not really intended to be a general > purpose storage mechanism; they're primarily for pushing values and > objects from the front controller down through the controller chain > (router, dispatcher, action controllers). I personally feel that > if you're needing something like that, use a Zend_Config object in > read/write mode and push it in either the registry or as a controller > param. > > > 2. I see usage of getRequest() and getResponse() methods inside the > > action class although these vars are sitting right inside the class > > itself (protected $_request, $_response) that can be accessed directly > > instead of invoking a method to access them. Accessing them directly > > inside the action class should improve performance. > > This is true. However, the accessors are there for cases where the > developer may want to wrap some logic around retrieving these objects -- > perhaps grabbing them from a registry, for instance. That said, when I > know that there's no such logic in classes I'm using, I access them > directly from the class properties. > > -- > Matthew Weier O'Phinney > PHP Developer | [EMAIL PROTECTED] > Zend - The PHP Company | http://www.zend.com/ > > -- Matthew Weier O'Phinney PHP Developer | [EMAIL PROTECTED] Zend - The PHP Company | http://www.zend.com/