I have a couple of functions inside a class that essentially do the same thing:
public function fn_a(){
return __FUNCTION__;
}
public function fn_b(){
return __FUNCTION__;
}
public function fn_c(){
return __FUNCTION__;
}
I need those functions to remain in their current names so I intentionally did not do:
public function fn_($letter){
return __FUNCTION__.$letter;
}
I was hoping for some sort of way to minify the verboseness of code here, since they all do the same. The ultimate situation would be something like this:
public functions fn_a, fn_b, fn_c() {
return __FUNCTION__;
}
Another solution, if applicable, might be doing something like Class’s “extends”:
fn_b, fn_c extend fn_a?
What do you think guys?
Any syntax like the one you suggested is not possible : if you want several distinct functions, you have to declare all those functions.
Still, a possibility could be that your fn_a, fn_b and fn_c functions just be simple wrappers arround a more complex one :
With that, depending on the length on the
fn_allfunction, of course, you would reduce the amount of code-duplication.Another idea (not sure how this could be done with methods, so I’ll demonstrate with functions) would be to use Closures — which means PHP >= 5.3
The basic idea being that you’d have a first function, that would return another one — which would bind the parameter passed to the first one :
First, the function that creates the others :
And, then, let’s get three functions, using that creator one :
And now, calling those three functions :
We get the following output :
I’ve never good at explaining how anonymous functions and closures work — but searching for “closure” on google should help you understand ; note that you can read tutorial about closures in Javascript : the idea is exactly the same.
(And, as closures are new in PHP — arrived with PHP 5.3 — you will not find as many tutorials as for Javascript)