Autor Zpráva
Pavel Trololo
Profil *
Ahoj, co jsem měl pocit, že jsem pochopil, tak při splněné podmínce php už nepokračuje a přeskočí vše až ke složené závorce, která podmínku ukončuje. Nebo si vybere souhlasné elseif nebo if.

Ale co nechápu je, proč hlasí php chybu v konstrukci ELSE, když tam ani koukat nepotřebuje a může mu být jedno co tam je. Nebo kotroluje vždy všechno?
mimochodec
Profil
Bude lepší, když ukážeš příklad něčeho, kde tu chybu dostáváš.
Tomáš123
Profil
Pavel Trololo:
v konstrukci ELSE, když tam ani koukat nepotřebuje
Najprv sa celý skript načíta a až potom sa vyhodnocujú podmienky.
Pavel Trololo
Profil *
mimochodec:
Je možné, že jsem tam měl nějakou špatnou závorku, už fakt nevím. Už jsem to smazal, ale potřeboval bych to vědět jestli to tedy přeskočí nebo ne.

Tomáš123:
Hádáš, nebo jsi si jist? Mělo by to zpracovávat postupně, ne?


Tak jsem to zkusil a asi to kontroluje, ale co mu je do toho? Proč prostě to php to nepřeskočí až po závorku. Bylo by to tedy efektivnější.
Alphard
Profil
Pavel Trololo:
Tak jsem to zkusil a asi to kontroluje, ale co mu je do toho? Proč prostě to php to nepřeskočí až po závorku. Bylo by to tedy efektivnější.
:-)
Už jste si zkoušel napsal interpret nějakého jazyka? PHP je navržené tak, že prvně parsuje daný script a až pak ho vykonává, existuje pro to několik dobrých důvodů. Ve chvíli parsování podmínky interpret ještě neví, jakou větví později půjde.

A i kdyby to šlo udělat jinak, je toto chování správné, programátor by měl být na chyby upozorněn co nejdříve (jak je lze rozpoznat).

Doplňuji, ještě jsem vám našel docela hezkou prezentaci www.slideshare.net/philipo/phpcompilerinternals-090824022750phpapp02.
Pavel Trololo
Profil *
Alphard:
Bohužel nesouhlasím, toto chování není správné. Správnost je jen úhel pohledu a často názor většiny, avšak nikoli všech. Dělám script, kde při nesplnění podmínky potřebuji relativně složitý úkon a velmi bych ocenil, kdyby to prostě bylo přeskočeno. Ale děkuji za názor.


Ta prezentace je opravdu hezká, díky. :)

V každém případě by tam pro určité případy mohla být klauzule kompletního ignorování.
Alphard
Profil
Pavel Trololo:
kde při nesplnění podmínky potřebuji relativně složitý úkon
Tak náročný, že je v těle té podmínky napsaný hádám aspoň na tisíc řádků? Tak to je zase špatně.
Doporučuji danou část vyčlenit a buď includovat, nebo volat funkci*. Takto volané scripty se začnou parsovat až v runtime fázi volajícího, tj. jen když jsou potřeba.

*Když jsem to psal, odlišoval jsem include a volání funkce z pohledu platnosti proměnných. Kvůli neparsování kódu je třeba i případnou funkci includovat, na což se v OOP může hodit autoload.
Pavel Trololo
Profil *
Alphard:
Jasně! Díky! Tohle jsem přesně potřeboval! Při include se to obejde a vůbec nenačte, to mi nedošlo. Dík

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0