Re: __call() and interfaces

From: Date: Wed, 22 Feb 2006 01:16:49 +0000
Subject: Re: __call() and interfaces
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-230864@lists.php.net to get a copy of this message
I find __call() to be a nasty solution, particularily from a self-documenting code point of view. I personally only use call when the function names are defined at run time; as you clearly know the function names, I would be implementing them as normal functions. If there is a lot of repeated code, implement the repeated code in a private function. Each of your methods then does it's own unique thing, calling the private function for the common processing. This way you don't have any copy-paste code, you implement your Interface and your code is easy to read, understand and maintain. David Mike Pfaff wrote: > Hello World :) > > I need to write a class that implements a predefined interface. In my > class all(or most) methods will use the same code. At first i thought > the ideal solution would be to handle this by defining the magic > __call() method in my class, but PHP then complains about the interface > not being completely implemented. (Is there no way to tell PHP that the > methods are handled by __call()?) > > Options i see right now: > a) Just omit "implements SomeInterface" and PHP will stop complaining. > This would be suboptimal as i want my class to "officially" conform to > the standardized API which is defined in the interface. > b) Implement all methods and just copy-paste the code. I find this > rather ugly and it's a hassle to maintain. Is there a better solution > than copy-paste(Keep in mind that the methods vary in argument types, > argument counts and return value types)? > > Somehow neither a) nor b) seems "the right way" to do what i want, so i > would be glad to hear your opinions on this. I would also be interested > what the best solution would be from a performance point of view. > > Regards, > Mike >

« previous php.general (#230864) next »