Autor | Zpráva | ||
---|---|---|---|
Jan Zabloudil Profil |
Ahoj,
Chtěl jsem se zeptat jak funguje funkce handler (všude nacházím user_error_handler apod. - ale takto prostou ne) Mám tady skript, který vypíše chybu v souboru : <?php function handler($typ, $zpráva, $soubor, $řádek) { switch ($typ) { case E_ERROR: echo '<h1>Závažná chyba</h1>'; echo '<p>V souboru ' . $soubor . ' na řádku ' . $řádek . ' došlo ke kritické chybě.<br/>' . $zpráva . '.</p>'; die(); break; case E_WARNING: echo '<h1>Varování</h1>'; echo '<p>V souboru ' . $soubor . ' na řádku ' . $řádek . ' došlo k méně závažné chybě.<br/>' . $zpráva . '.'; break; case E_NOTICE: // Chyby tohoto typu nebudeme zobrazovat. break; } } // Nastavte obsluhu chyby. set_error_handler('handler'); // Řetězec bude obsahovat chybně napsané slovo "Press" . $řetězec = "Knihy nakladatelství Computer Perss jsou skvělé!"; /* * Pokuste se k nahrazení chybného podřetězce použít funkci * str_replace(). Tento pokus vyústí v chybu typu E_WARNING. * Důvodem je užití nesprávného počtu argumentů funkce. */ str_replace( "Perss", "Press" ); ?> Díky |
||
Joker Profil |
Jan Zabloudil:
Co konkrétně na tom nechápete? set_error_handler nastaví obsluhu chyb na uživatelskou funkci, která pak má obsluhu chyb zařídit. V ukázce je obsluha chyb přesměrovaná na tu funkci handler. Ještě poznamenám, že tak nejdou zachytit všechny chyby. Respektive to (celkem logicky) nefunguje na chyby, které neumožňují pokračovat ve zpracování skriptu. Takže podle mého názoru to case E_ERROR je v ukázce zbytečně, protože E_ERROR (fatální chyba) tím nepůjde zachytit.
Kdo to zamknul? Měl k tomu nějaký důvod? Zatím odemykám. |
||
Časová prodleva: 12 let
|
0