<?php class Peron{ private $_name; private $_surname; private $_age; public function __construct($data){ throw new Exception ('Some data is missing or is wrong'); } $this->_age=$data['age']; $this->_surname=$data['surname']; $this->_name=$data['name']; } public function __toString(){ return 'Name '.$this->_name.' Surname '.$this->_surname.' Age '.$this->_age; } } try{ $person = new Peron(); }catch(Exception $exception){ } ?>
Mimo iż zastosowałem wyjątki dostaję na wyjściu
Kod
Warning: Missing argument 1 for Peron::__construct(), called in C:\xampp\htdocs\wyjatek\index.php on line 23 and defined in C:\xampp\htdocs\wyjatek\index.php on line 7
Sth goes wrong :( exception 'Exception' with message 'Some data is missing or is wrong' in C:\xampp\htdocs\wyjatek\index.php:9 Stack trace: #0 C:\xampp\htdocs\wyjatek\index.php(23): Peron->__construct() #1 {main}
Sth goes wrong :( exception 'Exception' with message 'Some data is missing or is wrong' in C:\xampp\htdocs\wyjatek\index.php:9 Stack trace: #0 C:\xampp\htdocs\wyjatek\index.php(23): Peron->__construct() #1 {main}
1)Dlaczego pojawia mi się ten warning?(pierwsza linijka) i co zrobić by się nie pojawiał, jak to powinno być poprawnie zrobione?
2)Wydaje mi się, że ten warning zawiera 'ciekawsze' informacje, które sa bardziej pomocne niż to co wypuwa wyjątek:P Czy zawsze do wyjątków trzeba pisać po swojemu informacje? co zrobić aby wyjątek również wypluł Missing argument 1 for Peron::__construct() ?
3)Co zrobić jeśi miałbym kod
//definicja klasy try{ $person = new Peron(); }catch(Exception $exception){ } .............................. ..Bardzo dużo kodu.. .............................. i teraz chciałbym zapisać Osobę do np piku file->save($person) // oczywiście chciałbym sprawdzić czy Osoba została poprawnie wygenerowana, a przercież w TRY nie dam całego kodu(którego jest bardzo dużo). W funkcji save nie sprawdzam czy $person jest poprawna bo jeśi nie jest to funkcja nie powinna byc w ogóle uruchamiana. Rozwiązanie, żeby robić jakieś boole wydaje mi się bez sesnu.