Eğer önerilen gibi herhangi bir sözdizimi mümkün değildir: Eğer birkaç farklı işlevleri istiyorsanız, tüm bu fonksiyonları bildirmek zorunda.
Yine de, bir olasılık fn_a, fn_b ve fn_c fonksiyonları sadece daha karmaşık bir civarı basit korumalar olması olabilir:
public function fn_a(){
return fn_all('a');
}
public function fn_b(){
return fn_all('b');
}
public function fn_c(){
return fn_all('c');
}
public function fn_all($name) {
// a lot of complex stuff here
}
Bunun üzerine, fn_all
fonksiyonu uzunluğuna bağlı olarak, tabii ki, kod-çoğaltılması miktarını azaltacaktır.
Başka bir fikir (not sure how this could be done with methods, so I'll demonstrate with functions) Kapaklar kullanmak olacaktır - PHP> = 5.3 demektir
Bir ilk işlevi olurdu bu varlık temel fikir, o başka bir dönecekti - ilkine geçirilen parametre bağlama hangi:
İlk olarak, diğer oluşturur fonksiyonu:
function creator($name) {
return function () use ($name) {
return $name;
};
}
Ve sonra, o yaratıcısı biri kullanılarak, üç fonksiyonlarını alalım:
$fn_a = creator('a');
$fn_b = creator('b');
$fn_c = creator('c');
Ve şimdi, bu üç işlevi çağırarak:
echo $fn_a() . '<br />';
echo $fn_b() . '<br />';
echo $fn_c() . '<br />';
Biz şu çıktıyı alırsınız:
a
b
c
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)