![]() |
| | Themen-Optionen |
| | Nach oben #41 | |
| Christian W. Achatz Registriert seit: 05.02.2007 Ort: München
Beiträge: 132
| Zitat:
__________________ Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a look at http://www.adventure-php-framework.org! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
| | |
| | Nach oben #43 |
| Gabriel Registriert seit: 27.09.2006 Ort: Radebeul
Beiträge: 406
|
Danke für eure Tipps: Ich habe mir jetzt das Teilproblem Error handling herausgepickt und habe dazu folgendes UML Diagramm erstellt: ![]() aufgerufen wird das ganze wie folgt: PHP-Code: Dann wird je nach Typ die bestimmte Klasse initialiesiert und über set Exception kann der Fehler gesetzt werden. Mit der Funktion out() wird das ganze dann so verarbeitet wie es der Typ verlangt. Also ausgegeben oder in den Log geschrieben. je nach dem. Der Code sieht bisher so aus: PHP-Code: Oder verstoße ich gegen ein Design Grundsatz?! Hier kommt natürlich noch mehr dazu. Also es wird noch geprüft ob überhaupt eine Exeption vorhanden ist. Außerdem wird die Funktionalität erweitert. Zum Beispiel Ausgabe des Pfades etc. Aber es geht mir hier um die herangehensweise Geändert von kampfgnom (18.11.2007 um 16:20 Uhr). |
| | |
| | Nach oben #44 |
| Christian W. Achatz Registriert seit: 05.02.2007 Ort: München
Beiträge: 132
|
Hallo, Kannst du mir mal ein Beispiel machen, wie das in der konkreten Applikation eingesetzt werden soll? Der Code-Schnipsel dazu ist IMHO nicht praktikabel, weil zu lang/umständlich...
__________________ Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a look at http://www.adventure-php-framework.org! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | Nach oben #46 |
| Johannes Müller Registriert seit: 15.09.2005 Ort: Königreich Flieden
Beiträge: 519
|
also du initialisierst erst einen Errorhandler, der einen möglichen Error ausgeben soll und hinterher wird der dann bei einer Exception mit dieser gefüttert und gibt diese aus. Das ist imo nicht so sinnvoll, weil so von vorneherein festgelegt ist, was mit einem Error passiert. Einerseits muss der Errorhandler dazu immer initialisiert werden, auch wenn er nicht gebraucht wird (was ja der Normalfall sein sollte), und andererseits werden so alle fehler gleich behandelt. Aber verschiedene Fehler sollten auch verschiedene Reaktionen hervorrufen. Wenn ein grundlegendes Problem vorliegt (beispielsweise DB nicht erreichbar), sollte auf jeden Fall der Admin benachrichtigt werden und nicht nur ein Eintrag ins Log geschehen. Ein Fehler, der durch eine Benutzereingabe hervorgerufen wird hat aber nicht unbedingt etwas im Log zu suchen.
__________________ Weißt Bescheid - Scheiß wie weit |
| | |
| | Nach oben #47 |
| Christian W. Achatz Registriert seit: 05.02.2007 Ort: München
Beiträge: 132
|
Hallo kampfgnom, das hatte ich schon fast befürchtet und da muss ich $traight-$hoota Recht geben, das ist nicht zielführend. Ich würde hier besser einen globalen ExceptionHandler implementieren und diesen mit http://de.php.net/manual/en/function...on-handler.php verwenden. Dort kannst du dir dann derartige Konstrukte oder Maßnahmen überlegen. Man könnte dort z.B. eine Config von "known exceptions" laden um entsprechend reagieren zu können oder falls die Exception nicht bekannt ist eine "unknown exception" werfen. Da man von "Exception" erben kann ist es ein leichtes verschiedene Exceptions zu definieren und beispielsweise per PHP-Code:
__________________ Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a look at http://www.adventure-php-framework.org! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | Nach oben #48 |
| Gabriel Registriert seit: 27.09.2006 Ort: Radebeul
Beiträge: 406
|
Ok das klingt logisch. Jetzt aber mal ne Frage: Wie kann ich, wenn ich den Exception Handler nutze, erreichen, dass ich das in den log schriebe, oder das ganze ausgegeben wird!? Weil das ist ja nur eine funktion oder verstehe ich das falsch?! Naja aber deswegen frag ich ja hier damit ihr mir sagen könnt was ich falsch mache |
| | |
| | Nach oben #49 |
| Christian W. Achatz Registriert seit: 05.02.2007 Ort: München
Beiträge: 132
|
Hallo, schau dir mal set_exception_handler() an. Dort kannst du eine eigene Implementierung als ExceptionHandler einsetzen. In dieser Implementierung kannst du ganz einfach ein Logfile öffnen und deine Exception im gewünschten Format reinschreiben. Das erste Beispiel unter http://de.php.net/manual/en/function...on-handler.php zeigt eine Möglichkeit der Implementierung.
__________________ Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a look at http://www.adventure-php-framework.org! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | Nach oben #50 |
| Gabriel Registriert seit: 27.09.2006 Ort: Radebeul
Beiträge: 406
|
Also quasie so: PHP-Code: Vielleicht mit nem Array den ich druchlaufen lasse und da meine Arten auslese?! Außerdem wurde gesagt, der Error handler soll nicht wissen welche art er hat. Aber wie Realiesier ich das? Wenn ich eine Globale Konstante festlege programmier ich ja nicht mehr gegen eine Schnittstelle sondern gegen eine konkrete Implementierung. Wenn ich das aber über ein Argument im Konstruktor Übergeben, so meint $traight-$hoota das es auch flasch ist?! Frag: Wie denn jetzt |
| | |
| | Nach oben #51 | |
| Johannes Müller Registriert seit: 15.09.2005 Ort: Königreich Flieden
Beiträge: 519
| Zitat:
Dazu könnte einfach jede Excepion einen entsprechenden wert haben, den du dann nur holen musst. Allerdings wäre mir dann zu viel, das die Funktionalität bestimmt, in der Exception gekapselt. Du kannst auch ein Array mit allen Fehlern an legen und denen Parameter zuweisen. Also beispielsweise PHP-Code: Oder, ein bischen aufwändiger, du gibst jeder Exception eigens definierte Errorlevel und entscheidest dann, was passiert, wenn eine Exception eine gewisse "Schwere" hat.
__________________ Weißt Bescheid - Scheiß wie weit | |
| | |
| | Nach oben #52 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
Schau dir mal das Observer-Pattern an. Damit könnte dein Error-Handler für unterschiedliche Fehlerstufen jeweils eine Methode anbieten, über die Beobachter an den Error-Handler bzw. die jeweilige Fehlerstufe gebunden werden können. diese Beobachter werden bei einem Fehler informiert und machen dann, was sie eben damit machen wollen: PHP-Code: Ungünstig an dieser Lösung ist natürlich, dass a) mehrere Objekte im Vorfeld initialisiert werden müssen und ggf. noch, dass b) die Fehlerstufen fest in die Schnittstelle gegossen werden. Die einzelnen Beobachter würden alle eine definierte Schnittstelle implementieren (IErrorObserver oder so). Basti |
| | |
| | Nach oben #53 |
| Gabriel Registriert seit: 27.09.2006 Ort: Radebeul
Beiträge: 406
|
Hab mir jetzt mal das Observer Pattern angeschaut. Das problem ist ja jetzt, ich müsste sozusagen immer schreiben: PHP-Code: Das mit dem Exceptionshandler klingt ja schon nicht schlecht...frage: Wie kann ich sozusagen mit einem String Überprüfen ob die Exception eines bestimmten types ist weil man müsste ja dann mit instance_of überprüfen was es für ein fehler ist. und ich ja iwie festlegen will, was mit welchem felher passiert. -_> war ein wenig unverständlich sry, weiß es aber nich besser auszudrücken... Geändert von kampfgnom (28.11.2007 um 18:49 Uhr). Grund: Ergänzung |
| | |
| | Nach oben #54 |
| Christian W. Achatz Registriert seit: 05.02.2007 Ort: München
Beiträge: 132
|
Hallo kampfgnom, zum Thema dynamischem ExceptionHandling kann man sich überlegen, dass die Exception selbst ihre mögliche Reaktion kennt. Diese kann der ExceptionHandler bei der Exception erfragen und entsprechend handeln. Das geht teilweise konträr zu obigem, ist aber trotzdem denkbar. Der ExceptionHandler kann dabei die Exception fragen, welche Klasse das Handling der Exception übernehmen soll. Entweder kann das die Instanz einer bereits bestehenden Klasse sein (siehe oben), oder die Information, welche Klasse zu instanziieren und zu verwenden ist.
__________________ Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a look at http://www.adventure-php-framework.org! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | Nach oben #56 |
| Christian W. Achatz Registriert seit: 05.02.2007 Ort: München
Beiträge: 132
|
Das verstehe ich nicht ganz. Was ist für dich $error? Falls das dein Error-/Exception-Handler ist, ok, andernfalls sollte man das etwas "schöner" kapseln/konfigurieren.
__________________ Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a look at http://www.adventure-php-framework.org! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | Nach oben #57 |
| Gabriel Registriert seit: 27.09.2006 Ort: Radebeul
Beiträge: 406
|
ok das war ein blödes Beispiel. Da ich ncoh kein Konkreten Code habe, versuch ich das nochmal in Worten wieder zugeben. Mir schwebt vor, einen Exceptionshandler zu schreiben, der auswählt was mit welchen Exceptions passiert. Dabei ist es wichtig das man für jede Exception getrennt festlegen kann welcher, ich sag mal, errohanlder (also klassen die das z.b in den log schrieben) verwendet wirrd. Das sollte möglichst über eine Methode gehen. Meine idee war, das man alle exceptions an eine klasse übergibt . bei dieser hat man vorher registriert, welcher error wie behandelt wird. Mein Problem ist allerdings noch die identifiezierung des errors. Also um das nochmal in eine konkrete Frage zu fassen: Wie kann ich heruasbekommen von welchem Typ die Exception ist. Sollte man ihr eine methode á la getExceptoinType() geben? oder wie könnte man das machen?? Weiß denn keiner wie ich den Name der Instanz als String bekomme? Also ich hab eine Exceptionsklasse: myException(); Dann würde ich gerne heraus "myException" herausbekommen Geändert von kampfgnom (04.12.2007 um 15:25 Uhr). |
| | |
| | Nach oben #58 |
| Gabriel Registriert seit: 27.09.2006 Ort: Radebeul
Beiträge: 406
|
Ok hab mir jetzt nochmal was für meinen Exceptionshandler ausgedacht: PHP-Code: PHP-Code: Also gebt mir euren Senf!! |
| | |
| | Nach oben #59 |
| Christian W. Achatz Registriert seit: 05.02.2007 Ort: München
Beiträge: 132
|
Hallo kampfgnom, ich würde ExceptionHandler und Exception trennen. Für beide kann es natürlich ein Interface geben, aber ein "Handler" ist schon sprachlich für die Behandlung zuständig. Das "was" definiert dann die Exception (siehe die Diskussion oben).
__________________ Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a look at http://www.adventure-php-framework.org! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Seitenstruktur Verwaltungssoftware | trefixxx | Anwendungsdesign / Softwarearchitektur | 9 | 01.03.2008 13:36 |
| [Design] CMS-System: Seitenstruktur | mepeisen | PHP-Programmierung | 19 | 30.07.2007 09:10 |
| Anwendung unter PHP 5 lauffähig machen, Herangehensweise, Erfahrungen | Ben | PHP-Programmierung | 12 | 02.02.2007 16:22 |