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