Autor | Zpráva | ||
---|---|---|---|
domixx Profil |
#1 · Zasláno: 30. 9. 2007, 14:33:09
Ví někdo podrobněji, jakej je rozdíl mezi exit() a die()? Co jsem zaznamenal, tak že exit je funkce a die jazykovej konstrukt, ale co to znamená nevím...
|
||
Ni7R0 Profil |
#2 · Zasláno: 30. 9. 2007, 14:43:15 · Upravil/a: Ni7R0
Language contruct je například if-else, foreach, while - zkrátka všechno, co tvoří programovací jazyk (ale language constructs nejsou proměnné, funkce, komentáře...). A jak exit, tak die jsou language construct (exit není funkce!) a pokud vím, tak jsou naprosto ekvivalentní.
|
||
llook Profil |
#3 · Zasláno: 30. 9. 2007, 14:47:50
Rozdíl mezi nimi není a obojí jsou jazykové konstrukty. Znamená to, že nemůžeš dělat některé fígle, které můžeš dělat s funkcema - nemůžeš to třeba volat přes call_user_func nebo přes proměnnou.
Například na tohle ti PHP řekne "Call to undefined function die()": $blabla = "die"; $blabla(); |
||
domixx Profil |
#4 · Zasláno: 30. 9. 2007, 14:56:30
Tož díky. Jen bych dodal, že v manuálu jsou zařazeny mezi funkce, máte pravdu, funkce to není... )dokonce se to tam i píše 0:-) ) Jinak se tam dále píše:
die — Vytiskne vzkaz a ukončí současný skript void die ( string $message ) Tento jazykový konstrukt vytiskne vzkaz a ukončí parsování skriptu. Nemá návratovou hodnotu. exit — Ukončí současný skript void exit ( [string $status] ) void exit ( int $status ) Tento jazykový konstrkut ukončí parsování skriptu. Nevrací žádnou hodnotu Zkoušel jsem takovej ten fígl s "or die", zaměnil ho za "or exit" a bylo to stejný... Takže to je alias? Ale to se mi moc nezdá... pokud ano, co z toho je alias... |
||
ph@tE Profil * |
#5 · Zasláno: 30. 9. 2007, 15:06:35
domixx
Nevím k čemu slouží v exit parametr $status, ale podle mě je rozdíl takový, že die ti ještě před ukončením scriptu umožní vypsat zprávu, což se hodí: $url = 'http://example.com'; header('Location: '.$url, TRUE, 301); die('Pro pokračování prosím <a href="'.htmlspecialchars($url).'">klikněte sem</a>.'); Zatímco exit pouze ukončí script. |
||
domixx Profil |
#6 · Zasláno: 30. 9. 2007, 15:08:18 · Upravil/a: domixx
ph@tE
Právě to jsem zkoušel... exit se chová naprosto stejně, taky totiž vypíše zprávu... |
||
llook Profil |
#7 · Zasláno: 30. 9. 2007, 15:20:53
Prostě je to to samý ve všech ohledech. Už při lexikální analýze se obojí vyhodnotí jako T_EXIT, viz výstup z token_get_all.
|
||
ph@tE Profil * |
#8 · Zasláno: 30. 9. 2007, 15:32:11
domixx
Aha, tak to je pro mě novinka:-) |
||
domixx Profil |
#9 · Zasláno: 30. 9. 2007, 19:58:47
Prostě je to to samý ve všech ohledech. Už při lexikální analýze se obojí vyhodnotí jako T_EXIT, viz výstup z token_get_all.
Díky :-) A mohl bych poprosit o skriptík na ten tokenizer? Nějak nevím, jak to rozchodit. |
||
nightfish Profil |
#10 · Zasláno: 30. 9. 2007, 20:05:18
Nevím k čemu slouží v exit parametr $status
pokud je $status řetězec, vypíše se na standardní výstup pokud je $status celé číslo (0-254), tak se tento vrátí jako návratová hodnota skriptu - lze využít pro detekci a ošetření chyb při používání PHP skriptu jako součásti většího systému (třeba dávkový soubor spustí PHP skript a podle návratové hodnoty se rozhodne, co bude provádět dál) |
||
Časová prodleva: 17 let
|
0