On 1 November 2010 16:27, Nathan Nobbe <quickshif...@gmail.com> wrote:
> On Mon, Nov 1, 2010 at 9:13 AM, Richard Quadling <rquadl...@gmail.com>
> wrote:
>> Hi.
>> I have an abstract base class (call it genericServiceHandler).
>> I have concrete classes (FaxService, EmailService).
>> The genericServiceHandler is watching for commands from an external
>> source. The commands will always be one of a fixed set, no matter what
>> the concrete service is. They are Pause, Continue, Start, Stop,
>> Shutdown, PreShutdown.
>> The genericServiceHandler has no need to process the commands. It only
>> receives them and maybe dispatches them to the concrete class.
>> The concrete class doesn't have to implement handlers for all of the
>> commands, though, at a minimum, onStart() would be pretty much
>> essential.
>> My question relates to how should I code this.
>> Should the base class have empty protected stubs to allowing the
>> concrete class to override them via inheritance?
>> Should I use __call() to capture the non-existing methods and use LSB
>> to allow the concrete class to get the commands?
>> I need to document this (phpdoc) to allow those designing the actual
>> services know what to implement.
>> The empty stubs certainly seems the easiest as I can block the scope
>> to protected and include a full reasoning on when the method will be
>> called (not all commands are applicable at all times).
>> Using __call() can be documented using @method, but pretty much only a
>> single line of description.
>> What would you all do?
> i would go w/ the stubbed out methods in the base class. if theres nothing
> to do for the default implementation just use the 'null' pattern,
> function pause() {}
>  __call is something of a last resort for me; i think it's best for proxies
> or similar and thats about the most its useful for.
> -nathan

That does seem to be the best fit for me.

I can protect and docblock the methods.

Thanks Nathan.


Richard Quadling
Twitter : EE : Zend
@RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY

PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to