-- 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/