Autor Zpráva
orava
Profil
na hostingu kde hostujem uz dva tyzdne bezi PHP 6 (teraz som to vsimol)
Aky je rozdiel medzi PHP5 a PHP6 ? a v com su je hlavne vyhody?
kletely
Profil
orava
Ja by som najprv pouzrel na google.
orava
Profil
ok nieco som nasiel
PHP6?!
srigi
Profil
No to vyhodenie BREAK je teda pekna <|>na. Co vy na to?
Davex
Profil
srigi
Klasický break zůstane. Jenom nebude v souvislosti se zavedením "goto" funkční dynamický break tj. break $var.
Měsíček
Profil
Myslím, že příkaz goto měl být v PHP už dávno .. nevím proč si s ním dali tak načas.
souki
Profil
goto? Není to nesmysl z basicu, který jenom podporuje špatné programování?
orava
Profil
no ja som sa s toho moc nedozvedel!
ak poznate este dajaky SK/CZ clanok tak tu dajte link
DoubleThink
Profil *
goto? Není to nesmysl z basicu, který jenom podporuje špatné programování?
Ano, navíc v PHP6 se bude dát skákat jenom vpřed a ne do podmínkových a objektových bloků. Tedy nic co by konstrukce do-while nezvládla už teď.

Jinak se mrkni na Vývoj PHP 6 od Jakuba Vrány.
souki
Profil
"Při použití objektu v kontextu řetězce se volá metoda __toString."
Tak tohle mi v PHP dost chybělo. Není to nc zásadního, ale dokáže to hezky zpřehlednit kód, když můžete použít
echo $zbozi->cena i echo $zbozi->cena->bezDPH
DoubleThink
Profil *
To už je i v pětce. Jakub Vrána jenom píše, že nevzniknou ekvivalentní magické metody pro další primitivní typy - třeba __toArray().
Měsíček
Profil
"goto? Není to nesmysl z basicu, který jenom podporuje špatné programování?"

Pouze mýty, zkušený programátor ho nepoužívá jen proto, protože ho nepotřebuje a využije ho opravdu jen v extrémních situacích, ale to neznamená, že je špatný.
souki
Profil
DoubleThink
Tak to mi zase něco uniklo. Díky za info
souki
Profil
Měsíček
Ukaž mi jednu situaci, kde je nějak rozumně využitelný a budu ti věřit.
Davex
Profil
souki
Oprávněné použítí goto je například při potřebě okamžitého opuštění několikanásobně vnořeného cyklu.
souki
Profil
Davex
Vyjímka mi přijde lepší. Stejně tak to jde vždycky poskládat z podmínek
Měsíček
Profil
"Vyjímka mi přijde lepší. Stejně tak to jde vždycky poskládat z podmínek"

V čempak ti příjde lepší? Mimochodem proč to složitě skládat z podmínek, když na to můžeš využít goto :)
souki
Profil
Měsíček
Protože goto je fuj
Vlastně jsi to přesně vystihl :) goto některé věci dokáže velmi rychle vyřešit. Časem se to ale může hrozně vymstít. Přecijen je asi důvod proč se už pár let nikde nepoužívá kromě primitivních jazyků, kde to zkrátka jinak udělat nejde
Joker
Profil
Davex
...v souvislosti se zavedením "goto"...
Huh?! Oni TEĎ chtějí do PHP zavést příkaz goto?! Kdo to proboha vymyslel?

Měsíček
Pouze mýty, zkušený programátor ho nepoužívá jen proto, protože ho nepotřebuje
Nejen zkušený programátor.
Jak známo, strukturovaný program může používat jen tři konstrukce: sekvence (příkazy postupně za sebou), selekce (větvení) a iterace (cyklus). Takže strukturované programy nemohou používat skoky. Existuje snad jen jedna "tolerovaná výjimka" (pak se mluví o "dobře navržených programech"), a sice předčasné ukončení cyklu (tj. výskok z cyklu před jeho dokončením). Tuhle funkčnost už ale má stávající PHP a příkaz break (případně throw).

Takže podle mě zavedení příkazu goto bude mít jediný dopad: rozšíří možnosti vytváření špatně napsaných a těžko odladitelných programů.
Měsíček
Profil
Co se týče příkazu goto tak to dobře uvedl Miloslav Ponkrác:

"Goto používám zřídka, asi tak jednom za půl roku až rok se hodí.

Kdysi dávno pan Dijkstra vyvolat hysterii kolem příkazu goto jakožto největšího zla. A dodnes z toho vzniká panika a fanatismus vůči goto. Pokud jste začátečník, je dobré goto nepoužívat zcela cíleně a naučit se zvládnout algoritmy pouze pomocí standardních strukturovaných příkazů (podmínky, cykly, atd..). Teprve později pochopíte, kde goto pomůže, a kde ne - je to velice velice zřídka.

Zejména na ošetřování chyb je goto někdy dost vhodné.

Jinak goto je velice rychlý příkaz - určitě je to jedno z nejrychlejších věcí co v programovacím jazyce vůbec existuje. Stejně podmínky/cykly/výjimky a další nejsou nic jiného, než prekavátěné goto. Je dobré rozumně uvažovat, než číst věci vytržené z kontextu.

Miloslav Ponkrác"
Davex
Profil
Joker
příkaz goto
Přesněji break label;

Kdo to proboha vymyslel?
Sara Golemon napsala patch, který byl po dlouhé debatě přijat.
Joker
Profil
Měsíček
Zejména na ošetřování chyb je goto někdy dost vhodné.
Jenže v takových případech bývá typicky daleko vhodnější try-catch.

Já nevím, no... mi připadá, že PHP místo aby řešilo dlouhodobé problémy (jako třeba totální chaos v pojmenovávání funkcí) a krystalizovalo do podoby ideálního skriptovacího jazyka pro menší projekty se naopak snaží rozpliznout do jakési špatně použitelné kopie "velkých" programovacích jazyků.
souki
Profil
Měsíček
Zejména na ošetřování chyb je goto někdy dost vhodné.
Zřejmě psáno v době, kdy v php ještě nebyly vyjímky. Ty jsou na to určené a ošetřování chyb se s nimi dělá parádně.
goto vždycky řeší jen to, co daný jazyk neumí. V AS jsou to cykly nebo podmínky, v PHP4 by se dalo využít na ošetření chyb. Ve vyší verzi nemá význam
Měsíček
Profil
"Zřejmě psáno v době, kdy v php ještě nebyly vyjímky."

Ten příspěvek nebyl směřován na PHP, byl směřován na příkaz goto obecně .. mimochodem psán maximálně 2 měsíce zpět ;)
souki
Profil
Měsíček
Stejně platí, že pokud jsou vyjímku,není potřeba to zběsile obcházet přes goto
Timy
Profil
OT: Lidi, prosím, výjimka.
Timy
Profil
Měsíček
Apriori není špatné nic, když se to používá správně. Proto by se obvykle nějaká vlastnost jazyka měla posuzovat relativně: vyváží klady příkazu goto jeho případné zápory? Myslím si, že pokud po goto hrábne nějaký ne zrovna kvalitní programátor (M. Ponkrác je určitě dobrý programátor, ten ví, kdy to použít), tak to dopadne katastrofálně. Jazyky běžně „chrání“ programátory a nepovolují nějaké vlastnosti (napadá mě třeba vícenásobná dědičnost v OOP), ačkoliv na nich apriori není nic špatného a jednou za čas se hodí.

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