Fifi209
20.03.2009, 22:09:54
Chciałbym wiedzieć czy wykonalne jest np. coś takiego:
Mam klasę
Kod
class test {
public $a;
public function metoda() {
if ($this->a == 1) {
echo 'Metoda testowa';
}else{
/* tutaj chciałbym zapisać błąd, że $this->a != 1, zawsze robiłem to na zassadzie np. error:save('opis bledu'); ale jest to nieporęczne i chciałbym to jakoś zautomatyzować, abym nie musiał sam wpisywać nazwy klasy i metody gdzie wystąpił błąd /*
}
}
Hmm jest taka możliwość?
jareeny
20.03.2009, 22:11:29
Rzucaj wyjątkami
http://pl.php.net/manual/pl/language.exceptions.phpA tutaj przykład wyjęty z tego linku
<?php
class MyException extends Exception {
public function __toString() {
return "exception '".__CLASS__ ."' with message '".$this->getMessage()."' in ".$this->getFile().":".$this->getLine()."\nStack trace:\n".$this->getTraceAsString();
}
}
?>
Fifi209
20.03.2009, 22:55:16
Dzięki za podpowiedź, ale czytając manuala i kilka innych opisów dot. wyjątków dalej nie umiem zrobić chyba banalnej rzeczy.
Mam różne klasy z różnymi metodami, ale w przypadku błędu zapisuje go:
error::save('Tekst błędu');
Teraz, chciałbym aby error::save(); nie tyle zapisywał błąd, co jeszcze nazwę pliku, klasy, i metodę gdzie wystąpił. (taka prywatna konsolka błędów)
jareeny
20.03.2009, 23:54:32
no to zamiast :
<?php
class Foo {
function bar() {
if($this->x) {
...
}
else {
error::save()
}
}
}
?>
dajesz:
<?php
class Foo {
function bar() {
if($this->x) {
...
}
else {
throw new Exception('Treść błędu');
}
}
}
?>
i łapiesz wyjątki tam gdzie chcesz:
<?php
try {
Foo::bar();
}
catch (Exception $e) {
echo $e->getMessage() . '<br>'; echo $e->getFile() . '<br>'; echo $e->getLine() . '<br>'; echo $e->getTraceAsString() . '<br>'; }
?>
Fifi209
21.03.2009, 00:06:31
Bardzo Ci dziękuję, niestety zdążyłem do tego dość metodą prób i błędów. Ale miło, że pomogłeś i naprowadziłeś na dobrą drogę.
Mam problem z:
Kod
echo __CLASS__ . '<br>';
Nie chce mi wyświetlać nazwy klasy ;/