$var = funkcja() przed jej zdefiniowaniem |
$var = funkcja() przed jej zdefiniowaniem |
14.11.2019, 16:45:50
Post
#1
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) |
Czy moze mi ktos wytlumaczyc dlaczego w PHP czasem definiuje sie funkcje w zmiennej przed jej zaistnieniem w kodzie?
Przyklad:
Wedlug mnie powinno byc odwrotnie ze najpierw funkcja a pozniej przypisanie funkcji do zmiennej. Czy taki kod ma sens:
Ten post edytował MESSIAH :) 14.11.2019, 16:56:40 -------------------- TERA TRYBI.pl
|
|
|
14.11.2019, 16:47:32
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 457 Pomógł: 6296 Dołączył: 27.12.2004 |
Cytat dlaczego w PHP czasem definiuje sie funkcje w zmiennej przed jej zaistnieniem w kodzie? Bo mozna. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
14.11.2019, 16:55:40
Post
#3
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) |
Ale czy to ma jakies sensowne wytlumaczenie? Czy poprostu jakis blad kompilatora? Chyba czytelniej jest definiowac po kolei wszystko niz pozniej szukac krowy w polu Bog wie gdzie i w jakim pliku.
-------------------- TERA TRYBI.pl
|
|
|
14.11.2019, 17:02:05
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 457 Pomógł: 6296 Dołączył: 27.12.2004 |
Niektorzy lubia definiowac funkcje na dole i tyle
Poza tym teraz juz nie pisze sie strukturalnie tylko w klasach - a tam to ma juz inny sens. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
14.11.2019, 17:29:38
Post
#5
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) |
Jak widze najwieksze firmy potrafia pisace strukturalnie gdyz ten kod wyzej pochodzi z oficjalnego repozytorium duzej swiatowej firmy.
-------------------- TERA TRYBI.pl
|
|
|
14.11.2019, 17:58:57
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 457 Pomógł: 6296 Dołączył: 27.12.2004 |
Jak to mowia: jedzmy gowno, miliony much nie moze sie mylic
Do wiekszosci normalnych firm, jak nie znasz obiektowki to raczej mozesz nawet nie startowac. Ale jak wolisz celowac w te pare firm, ktore leca jeszcze strukturalnie, to oczywiscie nikt ci nie broni -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
14.11.2019, 22:10:33
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 837 Pomógł: 226 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Dlaczego uważasz, że to błąd parsera skoro jest to element który jest wytłumaczony nawet w manualu PHP?
https://www.php.net/manual/en/functions.user-defined.php Parser znajduje wszystkie funkcje które nie są uwarunkowane i one działają. Uwarunkowane muszą poczekać przed wywołaniem. |
|
|
14.11.2019, 23:07:07
Post
#8
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) |
Dlaczego uważasz, że to błąd parsera skoro jest to element który jest wytłumaczony nawet w manualu PHP? https://www.php.net/manual/en/functions.user-defined.php Parser znajduje wszystkie funkcje które nie są uwarunkowane i one działają. Uwarunkowane muszą poczekać przed wywołaniem. Skoro parser skanuje linia po linii caly plik i pozniej wraca na poczatek pliku to chyba jest to strata czasu lub blad parsera. To tak jak malowac sciane pas po pasie a pozniej robic to od nowa. Nawet nie chce wiedziec ile mozna razy wracac z konca pliku na poczatek w php bo pewnie ograniczy to moja wyobraznie. -------------------- TERA TRYBI.pl
|
|
|
15.11.2019, 00:31:24
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
W JavaScripcie też to masz. To się nazywa hoisting. W przypadku javascriptowych zmiennych w starym stylu (var) jest to faktycznie trochę niezręczne, ale już w przypadku funkcji niekoniecznie. Potraktuj kod jako zbiór deklaracji i instrukcji, gdzie deklaracje po prostu są, nieważne gdzie. Na tej samej zasadzie, co w klasie, gdzie kolejność metod też przecież nie ma znaczenia. Nie musi to być niewydajne, interpreter zapewne optymalizuje drugi przebieg.
|
|
|
15.11.2019, 09:38:49
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 837 Pomógł: 226 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Jak malujesz ścianę, to najpierw robisz podkład, a dopiero potem nakładasz farbę.
|
|
|
15.11.2019, 10:27:24
Post
#11
|
|
Grupa: Moderatorzy Postów: 36 457 Pomógł: 6296 Dołączył: 27.12.2004 |
Cytat Skoro parser skanuje linia po linii caly plik i pozniej wraca na poczatek pliku to chyba jest to strata czasu lub blad parsera. Chyba troche za bardzo upraszczasz proces i mylisz pojecia parser/kompilator/wykonywanie. Parser nie lata po milion razy po tym samym pliku. Parser leci raz i raz parsuje tylko po czym twoj kod jest zamieniany na kod maszynowy a tam to juz wyglada zupelnie inaczej -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
16.11.2019, 12:12:37
Post
#12
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) |
Jak malujesz ścianę, to najpierw robisz podkład, a dopiero potem nakładasz farbę. Ale nie maluje scian po 100 razy tak jak mozna to robic w PHP Chyba troche za bardzo upraszczasz proces i mylisz pojecia parser/kompilator/wykonywanie. Parser nie lata po milion razy po tym samym pliku. Parser leci raz i raz parsuje tylko po czym twoj kod jest zamieniany na kod maszynowy a tam to juz wyglada zupelnie inaczej Czyli jak dziala PHP? Najpierw skanuje caly plik do pamieci i gdy na koncu znajdzie wywolanie funkcji wtedy z pamieci RAM wraca do linii z funkcja? Jesli by tak bylo to musialo by to znaczyc iz PHP zapisuje funkcje w pamieci uzywajac dodatkowo oznaczenia dla danej linii gdzie odszukac funkcje. -------------------- TERA TRYBI.pl
|
|
|
16.11.2019, 12:45:55
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
-------------------- |
|
|
16.11.2019, 17:01:27
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 837 Pomógł: 226 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
W innych językach istnieje kompilator którzy przetwarza kod do pliku który można wywołać. PHP też musi sprawdzić najpierw czy wszystko działa.
|
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 20:40 |