Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyjatki i style, pytanie koncepcyjne
q.michal
post 17.06.2017, 20:32:19
Post #1





Grupa: Zarejestrowani
Postów: 111
Pomógł: 1
Dołączył: 24.12.2013

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


Czesc,

Chcialem napisac wlasna klase obslugi wyjatkow i zastanawia mnie 1 kwestia. Zalozmy, ze podczas wczytywania strony wystapil nieprzechwycony wyjatek, moj ExceptionHandler go zlapal i wypadalo by w tym miejscu wyswietlic jakas strone z bledem i zakonczyc wykonywanie skryptu. Pytanie rozchodzi sie o ta strone z bledem. Czy wyjatki powinny miec wlasna strone z bledem, na ktorej ew. bylyby jakies informacje do debuggowania, czy moze w tym miejscu powinienem skorzystac z jakiegos systemu templete jak np Smarty i wyswietlic dokladnie taka sama strone jak w przypadku kazdego innego bledu, z tym wyjatkiem, ze bylby to np blad 500 zamiast 404?

Jak byscie podeszli do problemu?
Go to the top of the page
+Quote Post
nospor
post 17.06.2017, 20:39:18
Post #2





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
Dołączył: 27.12.2004




Problem z OOP nie ma zadnego zwiazku. Przenosze.

ps: miejze litosc, tylko nie smarty... Jak juz bardzo chcesz uzywac jakiegos gotowego systemu szablonow to chociaz uzyj Twig
ps2: czy ja dobrze rozumiem, ze cala strona nie uzywa smarty ale specjalnie dla wyjatkow chcesz dodac smarty? pogielo? wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Tomplus
post 17.06.2017, 20:48:22
Post #3





Grupa: Zarejestrowani
Postów: 1 838
Pomógł: 226
Dołączył: 20.03.2005
Skąd: Będzin

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


Wg mnie, forma i ilość danych powinna zależeć od strony jaką się prowadzi. Bo jeżeli jest to błąd który ma znaczenie z powodów bezpieczeństwa serwisu lub danych użytkowników to wysłanie nagłówka 500 jest na miejscu, jeżeli nie wystarczy komunikat o błędzie, nawet nie musi to być błąd braku strony.

A co do formy. Zrzucając logi, można dodawać do nich krótki HASH, który dalej powinien też być wyświetlony użytkowniku, aby mógł go wysłać do administracji w celu szybkiego z identyfikowania problemu który szczegółowo jest zapisany w logach.

@Nospor
Napisał przykładowo Smarty, chociaż pewnie użyłby w praktyce, gdybyś mu nie powiedział o tym biggrin.gif
Go to the top of the page
+Quote Post
q.michal
post 17.06.2017, 20:51:26
Post #4





Grupa: Zarejestrowani
Postów: 111
Pomógł: 1
Dołączył: 24.12.2013

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


Zle zrozumiales ;-)

Smarty jest przykladem - moze to byc rownie dobrze Opt czy wspomniany Twig. Takiego systemu template-ow chce uzywac na calej stronie - zarowno dla frontendu, jak i backendu. Chcialem takze zrobic w nim customizowalne strony bledow np dla 404, 403 itp. Pomyslalem, ze fajnie byloby to ujednolicic i w przypadku jakiegos wyjatku - wyswietlic dokladnie taka sama strone ale np z bledem 500. Oznaczaloby to, ze exception handler musialby stworzyc obiekt (np przytoczonego Twiga) i wyswietlic odpowiednia strone z bledem.

Zastanawiam sie czy takie rozwiazanie ma sens i co sadzicie o takim pomysle?
Obecnie do glowy przchodzi mi jedynie problem kiedy styl nie zostanie znaleziony, ale wyobrazam sobie ze taki wyjatek bedzie przechwycony a wykonywanie skryptu zakonczone chociazby za pomoca die().


@Tomplus: tez o tym myslalem. Mam nawet taka metode, ktora generuje i zwraca ID wykonania skryptu. Jest on logowany, moze byc rowniez wyswietlony uzytkownikowi - zarowno przy wyjatku jak i kazdym innym bledzie - w koncu wystapienie bledu 404 tez nie zawsze musi byc oczywiste wink.gif

  1. public static function getExecId() {
  2. static $execid;
  3. if(!isset($execid)) {
  4. $time = System::getMiroTime();
  5. $execid = sprintf("%07x%s", ($time - floor($time)) * 1000000, substr(sha1(mt_rand()), 0, 6));
  6. }
  7. return $execid;
  8. }



Ten post edytował q.michal 17.06.2017, 20:54:47
Go to the top of the page
+Quote Post
Pyton_000
post 18.06.2017, 08:38:27
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Ładne strony błędów są w modzie smile.gif O ile 404 powinno być maksymalnie szybkie jak to tylko możliwe o tyle pozostałe można olać. Choć inne kody niczym w sumie nie będą się różniły od 404 poza kodem.

Równie dobrze możesz zrobić statyczne pliki html z prostą zawartością smile.gif
Go to the top of the page
+Quote Post
q.michal
post 18.06.2017, 09:45:14
Post #6





Grupa: Zarejestrowani
Postów: 111
Pomógł: 1
Dołączył: 24.12.2013

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


No wlasnie chodzi o to, ze chcialbym tam dodatkowo wyswietlic jakis backtrace itp (ale zeby nie bylo, tylko kiedy bedzie wlaczone debuggowanie).
Z tego wzgledu nie chcialbym dawac statycznych stron. Z drugiej strony chcialbym dac mozliwosc zmiany wygladu tych stron.
Go to the top of the page
+Quote Post
Pyton_000
post 18.06.2017, 10:18:30
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


No to możesz zaaplikować np: https://filp.github.io/whoops/
Go to the top of the page
+Quote Post
q.michal
post 18.06.2017, 17:39:00
Post #8





Grupa: Zarejestrowani
Postów: 111
Pomógł: 1
Dołączył: 24.12.2013

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


Wiem, znam ;-)
Whoops ma wlasne style, czyli cos przeciwnego do tego co chcialbym osiagnac.
Prawde mowiac nie widzialem nigdzie aby wyjatki korzystaly ze styli, wiec chcialem 'skonsultowac' taka mozliwosc - czy nie niesie za soba jakis przykrych kosenwecji, ktorych nie jestem swiadom.
Chyba ze rozwiazalibyscie to w inny sposob.
Go to the top of the page
+Quote Post
Pyton_000
post 18.06.2017, 18:18:31
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Whoops w PrettyPageHandler ma metodę `addResourcePath()` w której możesz podać własne ścieżki do szablonów.
Dzięki temu możesz wygląd dostosować do swoich potrzeb.

Przeanalizuj sobie tą metodę:
https://github.com/filp/whoops/blob/master/...andler.php#L150

Ten post edytował Pyton_000 18.06.2017, 18:18:59
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 28.04.2024 - 11:18