Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcja obsługująca błędy
Forum PHP.pl > Forum > PHP
Szczav
Stworzyłem funkcję obsługującą błędy. Przekazuję ją do set_error_handler() i jest ok, ale kiedy zrobiłem z niej konstruktor w klasie przy jej wywołaniu wyskakuje mi błąd o braku parametrów.

[php:1:6ec379e474]<?php
class error
{
var $error_name;
var $error_msg;
var $error_file;
var $error_line;

function error($error_name, $error_msg, $error_file, $error_line)
{
//prints error information
print("<br><center><table bgcolor="#B1B1B1" border="0" width="100%"><tr><td><b>BŁĄD:</b> ".$error_msg);
print("<br><br>Proszę spróbować ponownie lub skontaktować się z administratorem.");
print("<br>Lokalizacja błędu: linia ".$error_line.", plik ".$error_file);

//if error is fatal stops all script and shows information
if($error_name == E_USER_ERROR || $error_name == E_ERROR)
{
print("<br><br>Błąd krytyczny, zakończenie programu.</td></tr></table></center>");
exit;
}

print("</td></tr></table></center><br>");
}
}


new error;
set_error_handler("error");
?>[/php:1:6ec379e474]
Grzesiek
Czy przypadkiem na dole nie powinno być
[php:1:4103e68539]<?php
$err = new error;
$err->set_error_handler("error");

?>[/php:1:4103e68539]
bamboos
Witam!!
bo konstruktor wymaga podania argumentow:
new error($arg1, $arg2, $arg3, $arg4); ...
Szczav
Cytat
Czy przypadkiem na dole nie powinno być
[php:1:7f915850ce]<?php
$err = new error;
$err->set_error_handler("error");

?>[/php:1:7f915850ce]


Nie, bo wtedy musiałaby być utworzona operacja set_error_handler w klasie, a ty chodzi o to żeby utworzona przeze mnie klasa została ustawiona jako domyślna do osbsługi błędów.

Argumentów w tej funkcji nie trzeba podawać, php samo je wstawia, jeśli w kodzie wystąpią błędy. Gdybym z tej operacji zrobił funkcję 'error' i napisał set_error_handler("error"); bez argumentów byłoby ok. Problem w tym że chce żeby to była klasa nie funkcja.
KaMeLeOn
Mylisz chyba pojęcia...
Jeśli konstruktor ma podane argumenty, to muszą być podane i nie ma na to rady - chyba, że podasz domyślne wartości...
Zresztą konstruktor w takiej formie to jedna wielka pomyłka, a zwłaszcza wypisywanie czegokolwiek na ekran.
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.