madrazel
12.08.2009, 13:16:11
podstawowy problem, mam zwykłą funkcję rekurencyjną i nie chcę mieć problemu kiedy zmienię jej nazwę, moje pytanie: jak odwołać się do funkcji wewnątrz niej samej nie używając jej nazwy ?
wookieb
12.08.2009, 13:18:55
function testowa()
{
$fName=__FUNCTION__;
$fName();
}
madrazel
12.08.2009, 13:30:48
a nie można bezpośrednio jakoś odwołać się do __FUNCTION__ , lub jakoś tak $__FUNCTION__ bez wprowadzania pomocniczej zmiennej ?, mi wywala takie coś "Fatal error: Function name must be a string" - oczywiście z pomocniczą zmienną działa
erix
12.08.2009, 14:07:18
${__FUNCTION__};
edit:errcall_user_func(__FUNCTION__);
~wookieb:
Cytat
oczywiście z pomocniczą zmienną działa
wookieb
12.08.2009, 14:08:50
Pokaż kod bo mi to działa z pomocniczą zmienną. Innej metody nie znalazłem.
ERIX. Twój kod wywołuje Fatal error: Function name must be a string in
madrazel
12.08.2009, 14:20:18
Kod
function rekurencja() {
$x = $x+1;
if ($x == 33) return $x;
${__FUNCTION__}();
};
echo rekurencja();
dlaczego mi to nie chodzi ?
Fatal error: Function name must be a string
ani to też:
Kod
function rekurencja() {
$x = $x+1;
if ($x == 33) return $x;
call_user_func(__FUNCTION__);
};
echo rekurencja();
wookieb
12.08.2009, 14:29:18
function rekurencja() {
$x = $x+1;
if ($x == 33) return $x;
call_user_func(__FUNCTION__);
};
To działa tylko, że u ciebie będzie se wykonywać w nieskończoność;
function tester($c=0)
{
if($c>1) return __FUNCTION__;
$c++;
echo call_user_func
(__FUNCTION__
, $c);
}
tester(5);
dr_bonzo
12.08.2009, 15:02:35
Eh, zmieniasz nazwe funkcji to zmien wszystkie jej uzycia i tyle. Skoro mozesz zmienic jej uzycia gdzies POZA nia, to czemu trudniej zmienic jej nazwe wewnatrz tej samej funkcji?
wookieb
12.08.2009, 15:11:21
Czasem tych wywołań wewnątrz funkcji może być dużo. A skoro jest możliwość wywołania za pomocą takiej metody to zawsze warto znać taką ciekawostkę.
madrazel
12.08.2009, 15:18:55
Im mniej miejsc gdzie można popełnić błąd tym lepiej. Nawet warto się natrudzić choćby było tylko jedno wywołanie.
Fifi209
12.08.2009, 15:23:02
Cytat(madrazel @ 12.08.2009, 15:18:55 )

Im mniej miejsc gdzie można popełnić błąd tym lepiej. Nawet warto się natrudzić choćby było tylko jedno wywołanie.
Nie powiedziałbym... To jakbyś budował dom aby przespać w nim tylko jedną noc.
dr_bonzo
12.08.2009, 15:26:46
Cytat
Czasem tych wywołań wewnątrz funkcji może być dużo. A skoro jest możliwość wywołania za pomocą takiej metody to zawsze warto znać taką ciekawostkę.
A o find + replace to slyszales?

Wystarczy tylko pamietac ze po zmianie nazwy funkcji trzeba zmienic tez nazwy w uzyciu metody w CALYM projekcie, co jest chyba oczywiste, reszta to tylko find+replace.
erix
12.08.2009, 15:50:39
Cytat
Im mniej miejsc gdzie można popełnić błąd tym lepiej.
Ale nie takim kosztem.
Znasz regułę KISS/BUZI? Nie? To przyswój.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.