Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: trigger error - zmiana spsobu działania
Forum PHP.pl > Forum > PHP
VGT
Na początek dwa krótkie pliki:

index.php
  1. <?php
  2. require_once './class.php';
  3.  
  4. $oTest = new Test();
  5. ?>


class.php
  1. <?php
  2. class Test
  3. {
  4. function Test()
  5. {
  6. $this->_blad('tresc bledu');
  7. }
  8. function _blad($sTresc)
  9. {
  10. trigger_error($sTresc, E_USER_WARNING);
  11. }
  12. }
  13. ?>


Obsluge bledow w swoich klasach zazwyczaj robie tak, ze mam jedna metode wywolywana zawsze wtedy, gdy wystapi gdziekolwiek blad, a w niej dzialania zwiazane z danym bledem + ewentualnie wyswietlenie komunikatu jesli obiekt jest w trybie debugowania.
Pomyslalem, ze moznaby zamiast wyswietlania, skorzystac z trigger_error, dzieki czemu podczas uzytkowania klasy moznaby skorzystac ze wszystkich dobrodziejstw takiego wyswietlania bledow.

Jednak problemem sa dane generowanego bledu. Otwarcie index.php wyswietli cos takiego:

Warning: tresc bledu in /home/vgt/public_html/test/class.php on line 10

Czyli w zasadzie niezaleznie od tego, czy blad spowodowal konstruktor, czy np ktoras z kolei uzywana metoda, komunikat bledu jest zawsze taki sam i nie przekazuje zadnych uzytecznych informacji.

Czy jest mozliwe uzyskanie aby wygenerowany blad wygladal tak:

Warning: tresc bledu in /home/vgt/public_html/test/index.php on line 4

PS. Ewentualnie chetnie wyslucham innych pomyslow, jedynie zaznacze, ze aktualnie musze pisac kod zgodny z php4, wiec try,catch odpada

Z gory dzieki za wszelkie sugestie i pomoc.
delfinium
1. set_error_handler()" title="Zobacz w manualu PHP" target="_manual - zapoznaj się najpierw z tym, w wyniku dostaniesz numer, opis, plik i numer linii w której wystąpił błąd

2. debug_backtrace()" title="Zobacz w manualu PHP" target="_manual - jeśli będziesz chciał wyciągnąć więcej informacji o błędzie i całej ścieżce wywołań

Obie funkcje są dostępne w PHP4.
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.