Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!
Wyszukiwarka

Wyszukiwarka

Aby odnaleźć interesujące Cię informacje wpisz poniżej szukane frazy:
Logowanie

Logowanie

Zaloguj się aby zobaczyć swój profil:

Jak umierać z godnością.

Nieoczekiwane zakończenie skryptu wiąże się zazwyczaj z pojawieniem niezbyt estetycznego komunikatu o błędzie lub pustej strony (w przypadku ustawienia "display errors off"). Jeśli chcemy uniknąć takiej sytuacji możemy skorzystać z funkcji register_shutdown_function, która pozwala na przypisanie funkcji wywoływanej ilekroć nasz skrypt kończy działanie.

Aby wykryć czy skrypt zakończył się bez wystąpienia błędu wystarczy na jego początku przypisać dowolnej zmiennej wartość false zaś na samym końcu nadpisać jej wartość na true. Dzięki temu, wywoływana funkcja będzie mogła stwierdzić czy skrypt zakończył się zgodnie z wolą programisty. Poniższy przykład demonstruje użycie register_shutdown_function w celu wykrywania krytycznych błędów. Dla najlepszego efektu wizualnego najlepiej jest wyłączyć wyświetlanie błędów przez serwer.

<?php
$bClean = false;
function shutdown_func(){
global $bClean;
   if (!$bClean){
      die("Nieoczekiwane zakonczenie skryptu");
   }
}
register_shutdown_function('shutdown_func');
$a = 1;
$a = new FooClass(); // spowoduje zakończenie skryptu z błędem krytycznym $bClean = true;
$bClean = true;
?>

Jak widać, nasza funkcja "shutdown_func" wyświetla komunikat w momencie gdy zmienna $bClean nie ma wartości true. Dla własnych zastosowań, najlepiej jest opakować tą funkcję klasą i nie używać zmiennej globalnej. Jako przykład wykonania polecam EZ Components.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie uzytkowników: (3)
Autor o czymś zapominiał
Piątek 28 Marzec 2008 5:18:16 pm - s69

global $bClean;

Takich deklaracji unikamy jak ognia, oczywiście skrypt nie zadziała w defoultowej konfiguracji php5 w php6 globalsów nie przewidziano wcale :)

koerkta
Środa 19 Marzec 2008 9:38:58 pm - itsme

Poprawione.
Dzięki :-)

Błędzik
Środa 19 Marzec 2008 8:35:57 pm - tiraeth

Oczywiście na końcu bloku kodu zabrakło $bClean = true;

Jeśli go nie będzie, to za każdym razem nam się komunikat wyświetli...

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2024 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System