Re: Implementing optional methods in a concrete class, but calling them from an abstract class.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1 November 2010 16:27, Nathan Nobbe <quickshiftin@xxxxxxxxx> wrote:
> On Mon, Nov 1, 2010 at 9:13 AM, Richard Quadling <rquadling@xxxxxxxxx>
> 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.

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




[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux