![]() |
![]() ![]() |
![]() |
![]() ![]()
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)
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
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Person wymaga podania parametru. Sam to określiłeś w definicji konstruktora. Czyli ma być np. tak:
$person = new Peron($jakiśparametr); No i brak tego parametru nie jest żadnym wyjątkiem a najzwyklej w świecie WARNINGIEM stąd dostajesz WARNING ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 5 Dołączył: 10.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Czyli powinienem stworzyć dodatkowy konstruktor który nie przyjmuje parametrów i tam wyrzucić błąd?
Czy mógbyś odpowiedzieć jak rozwiązać pytanie nr3? Czy w PHP nie można przeciążyć operatorów? Jak to inaczej zrobić
Ten post edytował mimol 22.08.2012, 08:55:21 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Poprostu zrób tak:
public function __construct($data=null){ Wówczas możesz podać parametr ale nie musisz. W php nie możesz przeciązac Co do pytania nr3 to nie mam bladego pojęcia o co ci chodzi. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 5 Dołączył: 10.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za odpwiedzieć.
A czy jest jakiś sposób na pzeciążenie (załóżmy, że chciabym również podawać dane nie w tabicy a jako osobne stringi) Czy w PHP trzebra robić klasy które dziedziczą i tam na nowo definiować konstruktor? Odnośnie pytania nr3 Chcę sobie utworzyć obiekt $osobia klasy Osoba a potem zapisać go do piku (to już obsługuje inna funkcja)
Chciałbym to obsużyć na wyjątkach (jeśi osoba nie powstanie to nie chce jej zapisać do piku tylko wyswielic stosowny komunikat). Jednak nie widzę sesnu dawać mojego całego kodu w bok Try. Jak to inaczej rozwiązać (nie chcę również sprwadzać w klasie Plik czy $osoba istnieje, klasa Osoba powinna się tym zająć). Jedyne rozwiązanie jakie przychodzi mi do głowy to własnie
Cytat Obsługa błędów jest to jeden z istotniejszych elementów współczesnych aplikacji. Początkujący programiści często ją bagatelizują, kompletnie nie przejmując się tym, że przy złych ustawieniach na ekranie przeglądarki pojawia się 500 ostrzeżeń PHP, albo załatwiając sprawę najprostszą komendą die(). Wykorzystują to hakerzy, dla których ścieżki dostępu, nazwy plików i numery linii wyświetlane przy komunikatach PHP to znakomite źródło informacji o serwerze, skrypcie oraz umiejętnościach programisty. Jak wyłączyć w wyjątkach aby nie pojawiała się ścieżka / nr lini? Ten post edytował mimol 22.08.2012, 09:13:16 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
nie wiem czy dobrze rozumiem:
jeżeli nie chcesz aby wyświetliło "ale to się wykona" wówczas możesz wrzucić to w blok try lub w catch zrobić tak:
-------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 5 Dołączył: 10.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Pisałem wyżej
Cytat Rozwiązanie, żeby robić jakieś boole wydaje mi się bez sesnu. Ale widocznie inaczej się nie da A czy da się wyłączyć pokazywanie lini w wyjątkach? |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Da się wyłączyć raportowanie błędów w ogóle.
Ew. całą aplikację wciskasz w blok try-catch i wyjątkami pluć nie będzie (wszystkie w końcu dziedziczą po Exception). -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Skoro nie chce zrozumieć, po co się używa wyjątków, to co poradzić.
![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 15:32 |