Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Obsługa wyjątków, Pojawianie się Warning
mimol
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 5
Dołączył: 10.12.2007

Ostrzeżenie: (0%)
-----


Napisałem sobie klasę Osoba, aby przetestować na niej działanie wyjątków (chyba nie do końca powinny być tu stosowane, ale nic innego nie przychodzi mi do głowy)
  1. <?php
  2. class Peron{
  3. private $_name;
  4. private $_surname;
  5. private $_age;
  6.  
  7. public function __construct($data){
  8. if(empty($data['name']) || empty($data['surname']) || empty($data['age']) || !is_int($data['age'])){
  9. throw new Exception ('Some data is missing or is wrong');
  10. }
  11. $this->_age=$data['age'];
  12. $this->_surname=$data['surname'];
  13. $this->_name=$data['name'];
  14.  
  15. }
  16. public function __toString(){
  17. return 'Name '.$this->_name.' Surname '.$this->_surname.' Age '.$this->_age;
  18. }
  19. }
  20. $data = array('surname'=>'Smith','name'=>'John','age'=>22);
  21. try{
  22. $person = new Peron();
  23. echo 'Person created';
  24. }catch(Exception $exception){
  25. echo 'Sth goes wrong :( '.$exception;
  26. }
  27.  
  28. ?>

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}

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
  1. //definicja klasy
  2. try{
  3. $person = new Peron();
  4. echo 'Person created';
  5. }catch(Exception $exception){
  6. echo 'Sth goes wrong :( '.$exception;
  7. }
  8. ..............................
  9. ..Bardzo dużo kodu..
  10. ..............................
  11. i teraz chciałbym zapisać Osobę do np piku
  12. 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.
  13. Rozwiązanie, żeby robić jakieś boole wydaje mi się bez sesnu.

Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 11:04