Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd przy wywoływaniu new Error(...)
Forum PHP.pl > Forum > PHP > Object-oriented programming
starach
Witam.
Postanowiłem przepisać trochę własną obsługę błędów.
Niestety mam problem z jej wywołaniem.
Napisałem funkcję na którą wskazuje set_error_handler()
Ma ona taką postać:
  1. <?php
  2. function error_handler($code, $message, $file, $line) 
  3. {
  4. $error = new Error($message, $code, '', false);
  5. $error->set_info('file', $file);
  6. $error->set_info('line', $line);
  7. $error->parse();
  8. }
  9. ?>

Nie wiedzieć czemu ten kawałek generuję mi błąd, a dokładnie moment przypisania do zmiennej $error
obiektu klasy która rozszerza Exceptions ( $error = new Error ... )
debug_backtrace() zwraca mi coś takiego
[file] -> D:\WWW\orglee\class\error\error_handler.php
[line] -> 4
[function] -> __construct
[class] -> Error
[object] ->

Linia 4 to linia przypisania obiektu do zmiennej $error.
Konstruktor klasy Error wygląda natomiast tak:
  1. <?php
  2. public function __construct($message, $code=0, $desc, $auto_parse_error=true) 
  3. {  
  4. $trace = debug_backtrace();
  5. $this->print_bacttrace($trace);
  6. }
  7. ?>

Macie może jakiś pomysł co ja skopałem tym razem ?

edit>
Oprócz tego że źle nazwałem metodę drukującą mi debug_backtrace(),
ale to chyba nie jest przyczyną tego problemu tym bardziej że metoda tak nazwa istnieje w klasie.

edit>>
dobra chyba już rozumiem.
On nie zgłasza błędu w linii 4 tylko zapisuje do protected::line i protected::file miejsce wywołania klasy Error.
Mam rację czy tylko mi się wydaje że mam rację ?
DeyV
niestety - masz rację.

Powstały wyjątek zapisuje sobie ścieżkę od momentu powstania swojego powstania, stąd też w takim rozwiązaniu wszystkie "błędy" będą wskazywać na tą funkcję.
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.