Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]prpblem z funkcja
Forum PHP.pl > Forum > Przedszkole
trucksweb
oto funkcja wyswietlajaca bledy, dosc skromna ale dla mie wystarczajaca.
Zapytania sql jakos ladnie robi, natomiatt bledy w skrypcie i literowki juz ukrywa blinksmiley.gif

  1. <?php
  2. class ERRORS {
  3.  
  4.  /**
  5.    *  Wyświetlanie szczegółów błędów
  6.    */    
  7.  function ErrorHandler($errno, $errstr, $errfile, $errline)
  8.  {
  9.      switch ($errno) {
  10.      case E_USER_ERROR:
  11.          if ($errstr == '(SQL)')
  12.          {
  13.              echo "<div class='error'><b>SQL Error: </b> [$errno] " . SQLMESSAGE . "<br />\n";
  14.              echo "Zapytanie: " . SQLQUERY . "<br />\n";
  15.              echo "W linii: " . SQLERRORLINE . " ,w pliku: " . SQLERRORFILE . "<br />\n";
  16.              //echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
  17.              echo "Zatrzymano wywołanie...<br /></div>";
  18.          } else
  19.          {
  20.              echo "<div class='error'><b>Wystąpił błąd: </b> [$errno] $errstr<br />\n";
  21.              echo "  W linii: $errline ,w pliku: $errfile <br />\n";
  22.              echo "Zatrzymano wywołanie...<br /></div>";
  23.          }
  24.          exit(1);
  25.          break;
  26.  
  27.      case E_USER_WARNING:
  28.      case E_USER_NOTICE:
  29.      }
  30.      return true;
  31.  }
  32.  
  33.  
  34.  /**
  35.    *  Funkcja definiująca zmienne błędów SQL
  36.    */    
  37.  function sqlErrorHandler($error, $query, $phpfile, $line)
  38.  {
  39.      define("SQLQUERY", $query);
  40.      define("SQLMESSAGE", $error);
  41.      define("SQLERRORLINE", $line);
  42.      define("SQLERRORFILE", $phpfile);
  43.      trigger_error("(SQL)", E_USER_ERROR);
  44.  }
  45.  
  46.  
  47. }
  48.  
  49. /**
  50.  *  Przejęcie obsługi błędów przez funkcję
  51.  */
  52. set_error_handler(array('ERRORS', 'ErrorHandler'));
  53. ?>



np taki blad:

  1. <?php
  2. $errors = new ERRORS;
  3. echo($test=5/0);
  4. ?>


juz ukryje.
Mozna to jakos poprawic ? bo chyba powinna wyswietlic elsa z pierwszego if'a
Axexis
Albo ja coś przeoczyłem, albo wogóle nie odwołałeś do tej klasy, więc jakim cudem Ty chcesz, aby ona cokolwiek wyświetlała.?
Wewnątrz __construct() nie widzę.

@edit:
Dobra, przeoczyłem smile.gif

spróbuj: set_error_handler(array('ERRORS', 'ErrorHandler'), 'E_ALL');
trucksweb
z E_ALL probowalem i dalej nic
jak wpisze jak podales, wywali blad:
  1. <?php
  2. et_error_handler() expects parameter 2 to be long, string given
  3. ?>


jak wpisze samo E_ALL to dalej ukrywa pozostale bledy.

poza tym, w pliku config mam: error_reporting(E_ALL);
erix
Cytat
spróbuj: set_error_handler(array('ERRORS', 'ErrorHandler'), 'E_ALL');

Nie tu się wstawia E_ALL. ;P

Cytat
juz ukryje.
Mozna to jakos poprawic ? bo chyba powinna wyswietlic elsa z pierwszego if'a

Nie wyświetli, bo stałe błędów pochodzących z parsera nie zaczynają się od E_USER_. Zerknij tu: error_reporting" title="Zobacz w manualu PHP" target="_manual.
trucksweb
czyli gdybym dal dodatkowa mozliwosc w case to powinno przejsc ? bo cos nie bardzo chce dzialac,

dalem :
  1. <?php
  2. case E_ALL:
  3.            echo "<div class='error'><b>Wystąpił błąd: </b> [$errno] $errstr<br />\n";
  4.              echo "  W linii: $errline ,w pliku: $errfile <br />\n";
  5.              echo "Zatrzymano wywołanie3...<br /></div>";
  6.              break;
  7. ?>


i chyba powinno cos wylapac ?

//edit
samo E_ALL nie zadziala, musi byc rozdzielone na poszczególne typy bledow.
no i teraz az pieknie czytac wszystkie bledy guitar.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.