Autor Zpráva
domixx
Profil
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
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
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
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 *
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
ph@tE
Právě to jsem zkoušel...

exit se chová naprosto stejně, taky totiž vypíše zprávu...
llook
Profil
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 *
domixx
Aha, tak to je pro mě novinka:-)
domixx
Profil
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
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)

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