Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Obsluga bledow w aplikacjach
bamboos
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 3.05.2003
Skąd: Łódź

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


Na poczatek, przepraszam za brak polskich liter, ale jeszcze nie uporalem sie z klawiatura ;P

Jak w swoich aplikacjach rozwiazujecie obsluge bledow.
Powiedzmy, chce napisac skrypt do wysylania sms'ow:
[php:1:59e694bc36]<?php
class Error
{
f report();
}

class Socket
{
// klasa do obslugi socketow
var Error = new Error();
}

class Http
{
// do obslugi polaczenia z serwerem www
var Socket = new Socket();
var Error = new Error();
}

class Sms
{
// do wyslania smsa
var Http = new Http();
var Error = new Error();
}
?>[/php:1:59e694bc36]
Teraz, czy kazda klasa powinna miec "w sobie" zadeklarowana klase Error, ktora bedzie wyswietlala komunikaty i w razie bledow krytycznych przerywala dzialanie aplikacji. Czy moze wykozystac singletony (jesli dobrze zrozumielem ich idee):
Error::report(message, level);
Dobrze bylo by, aby Error wspolpracowalo z klasa Language (obsluga jezykow), ale to juz nie problem.
Pozatym, ktore bledy wyswietlac? Czy naprzyklad brak pliku konfiguracyjnego i w zwiazku z tym uzycie wartosci domyslnych jest bledem, o ktorym uzytkownik powinien wiedziec?!? Moze takie bledy logowac gdzies do pliku, zeby tylko admin mial do nich dostep...
Jak wy to wszystko widzicie i ktore rozwiazanie zazwyczaj wybieracie, bo ja jeszcze nie wypracowalem sobie metody i chetnie skozystal bym z dobrych rad.


--------------------
Go to the top of the page
+Quote Post
lukaswoj
post
Post #2





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 2.01.2004
Skąd: Lublin

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


Ok a więc wg mnie.

Napewno pomysł z obiektem obsługującym błędy w każdej z klas jest zły bo nieoptymalny, przecież w zupełności wystarczy jeden obiekt obsługujący błędy.

Też nie jestem pewien czy do końca rozumiem ideę używania singletonów, ale wiem, że to sie "kręci" wokól utrzymywania tylko jednej instancji obiektu danej klasy, więc tutaj takie podejście będzie najbardziej prawidłowe.

Proponuję to zrobić również w ten sposób, aby obiekt obsłgujący błędy był tworzony dopiero jak wystąpi jakiś błąd. Skoro błędu może nie być to szkoda zasobów na obiekt do jego obsługi.

A co do wyświetlania, ja u siebie praktykuje różne poziomy logowania, podczas pisania skryptu napewno wszelkie informacje się przydadzą, ale już dla końcowego usera, powinno być tylko wyświetlane coś w stylu "Błąd krytyczny, dalsza praca niemożliwa" - a w tym samym momencie pełne informacje o błędzie wysyłane mogą być do pliku lub bazy danych.

Dla mało skomplikowanego skryptu wystarczy zwykły przełącznik, który powoduje nie wyświetlanie informacji szczegółowych o błędach, natomiast dla większych skryptów, można porobić różne poziomy zgłaszania i logowania błędów. Coś na wzór php'owego error_reporting().


--------------------
Pozdrawiam
Łukasz Wojciechowski
New Generation Software
+48 602 214 629
http://www.ngsoft.pl
Go to the top of the page
+Quote Post
Bakus
post
Post #3


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

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


Najlepszym pomysłem jest nie tworzenie klasy a funkcji, która na podstawie przekazanego jej np. numeru błędu generowała by dalsze zdarzenia i kończyła wykonywanie skryptu...

Komunikaty błędów można przechowywać w osobnym pliku jako tablicę asocjacyjną... to rozwiązanie daje możliwość dodatkowo nadzorowania języków (wiele tablic z językami) i poziomów (różne pliki z danymi dla różnych poziomów)...

Takie rozwiązanie poza tym nie generuje kolejnej klasy... a jedynie jedną funkcję, która na dobrą sprawę odpowiada tylko za wczytanie odpowiedniego rekordu z tablicy w jakimś tam pliku... czyli w sumie musi zrealizować 3 zmienne - język, poziom błędu i treść komunikaty dla usera...


--------------------
Powrót do przeszłości :)
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 Aktualny czas: 21.08.2025 - 02:49