![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 1 Dołączył: 2.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Piszę sobie prostą obsługę błędów w PHP i mam pytanie, wykorzystuje sobie przykładowo taki skrypt
Mam pytanie, mianowicie czy da się zrobić taki system obsługi błędów który by najpierw sprawdzał czy są jakieś błędy i je wyświetlał tak że np. nie wyświetlało mi "1" w skrypcie oraz "2". Nie chodzi mi o zrobienie diva który 1,2 zasłoni tylko system który sprawdzi najpierw. Pozdrawiam i dziękuję za odpowiedzi Ten post edytował Narzew 6.04.2013, 19:24:42 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Najpierw realizuje się logike a dopiero potem wygląd. Przy takim podejściu zawsze zanim cokolwiek wyświetlisz, masz już przeprowadzone wszelkie obliczenia/komendy/itp i możesz odpowiednio reagować na to.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 1 Dołączył: 2.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
No tak ale jak korzystam np z MVC i wyświetlam Widok i w nim jest jakiś błąd (choćby to dzielenie przez 0) to wtedy wyświetli mi zawartość pliku do błędu
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jakim cudem w widoku ty masz dzielenie przez 0? Widok służy do wyswietlania informacji a nie wykonywania działań.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 1 Dołączył: 2.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dzielenie przez zero to przykładowy błąd, wiem że służy tylko do wyświetlania danych ale przykładowo chciałbym sobie zrobić tabele, użyje foreach i coś źle napiszę i będzie nie tak.
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No i wówczas dodstaniesz błąd. No i w czym problem, bo nadal nie rozumiem.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 1 Dołączył: 2.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dostane błąd + do tego co zdąży się wykonać a ja chce aby PHP sprawdzić wcześniej czy jest tam błąd i jeśli jest to wyświetlił go przed wyświetleniem pełnego widoku
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Czyli chcesz najpierw przeanalizować cały View pod kątem błędów, a dopiero w przypadku, gdy błędów nie ma to wyświetlić?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 1 Dołączył: 2.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Znaczy nie koniecznie tylko widok, chodzi mi wyłapanie błędów przed wyświetleniem widoku itp
|
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
1) A co ci ten błąd w tym view przeszkadza? Błędy w view na dobrą sprawę powinienieneś mieć tylko i wyłącznie na etapie tworzenia aplikacji. Jeśli masz później, znaczy że masz źle napisaną aplikację
2) Od biedy najpierw wykonuj raz view, wynik pamiętać w zmiennej, i dopiero gdy nie ma błędów - wyświetlaj ten view ze zmiennej |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 1 Dołączył: 2.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Nie przeszkadza tylko chce sobie stworzyć wygodne narzędzie do tworzenia aplikacji, o MVC ja pisałem tylko przykładowo. Po prostu chce aby skrypt przed uruchomieniem i wyświetlaniem czegokolwiek wyłapał błędy i tyle. Nic więcej nie potrzebuje
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@nospor: Widok to nie tylko wyświetlanie danych, ale nawet przy tym jednym zadaniu jest sporo miejsca błędy. Każdemu może zdarzyć się nie wyłapanie czegoś na etapie tworzenia aplikacji, więc podejście @Narzew by stworzyć mechanizm kontrolujący to jest jak najbardziej słuszne. W końcu obsługa błędów to absolutna podstawa, a wyświetlenie błędu w przeglądarce rozwalające pół strony na serwerze produkcyjnym to żadna obsługa błędów.
@Narzew: Rozwiązanie jest bardzo proste: skorzystaj z buforowania (ob_start, ob_get_clean i pokrewne). |
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@Crozin z całym szacunkiem, ale nie wyobrażam sobie jak na etapie tworzenia aplikacji nie można wyłapać błędów w widoku.
Cytat Rozwiązanie jest bardzo proste: skorzystaj z buforowania (ob_start, ob_get_clean i pokrewne). Dlatego napisałem, by najpierw zapamiętywał widok do zmiennej. Każde lepsze MVC to udostępnie właśnie na zasadzie ob_.....Wracając do tematu: twoja funkcja nie może wyglądać tak: public static function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) { echo $errstr; } Bo nic dziwnego ze ci rozwala wyglad jak wali echo gdzie popadnie. Nie możesz tak robić. Błędy masz zapamiętywać w tablicy, a następnie w widodu masz mieć kawałek kodu, który będzie błędy z tej tablicy wyświetlał tam gdzie Ty chcesz, a nie gdzie popadnie. @edit: @Crozin oczywiście masz rację. Za bardzo skupiłem się na pewnych błędach, zapominając o innych, które zawsze mogą wystąpić (IMG:style_emoticons/default/smile.gif) Tak czy siak, system błędów autora należy poprawić conajmniej do wersji, którą proponuję, gdyż w przeciwnym wypadku żadne ob_ nie pomogą, skoro błędy i tak będą lecieć na ekran gdzie popadnie.
Powód edycji: [nospor]:
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 1 Dołączył: 2.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
@Crozin Dzięki bardzo, korzystałem kiedyś z tego ale kompletnie wyleciało mi to z głowy, wielkie dzięki
@nospor Kod podawałem PRZYKŁADOWO, jakoś nie wyobrażam sobie implementacja jego w środowisku produkcyjnym. Cytat Bo nic dziwnego ze ci rozwala wyglad jak wali echo gdzie popadnie. Nie możesz tak robić. Błędy masz zapamiętywać w tablicy, a następnie w widodu masz mieć kawałek kodu, który będzie błędy z tej tablicy wyświetlał tam gdzie Ty chcesz, a nie gdzie popadnie. Ehh chce zrobić obsługę błędów które występują w skrypcie (E_WARNING, E_NOTICE) a nie informacje że użytkownik zostawił puste pole które jest wymagane, dawałem echo gdzie popadnie ponieważ chciałem tylko pokazać kod jak najprostszy. Powtarzam jeszcze raz, kod który podawałem był przykładowy Po prostu chce aby przy tworzeniu aplikacji wyskoczyło mi okienko co gdzie jest nie tak a nie pół strony i okienko. @nospor nie traktuj wszystkich z góry jako nie znających się przepisywaczy Dzięki za pomoc! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 08:40 |