![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 21.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 ?
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 21.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
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
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
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 Ten post edytował wookieb 12.08.2009, 14:09:36 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 21.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
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(); Ten post edytował madrazel 12.08.2009, 14:22:44 |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
To działa tylko, że u ciebie będzie se wykonywać w nieskończoność;
|
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
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?
|
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
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ę.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 21.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Im mniej miejsc gdzie można popełnić błąd tym lepiej. Nawet warto się natrudzić choćby było tylko jedno wywołanie.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#12
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
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? (IMG:style_emoticons/default/smile.gif) 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. |
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 23:46 |