php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.06.2005, 17:53  
Gast
 
Beiträge: n/a
Standard Fehler abfangen in Klassen

Hallo,

ich würde gerne wissen wo man Fehler am besten abfängt, in der Klasse oder in der Anwendung, die diese Klasse benutzt, oder in jeder Methode.

Damit meine ich z.B. wenn in einer Klasse bestimmte Objekte einer anderen Klasse benutzt werden, sollte ich da beim Übergeben der Objekte innerhalb der Klasse prüfen ob es wirklich Objekte sind (also z.B. mit is_object) oder sollte ich das in der Anwendung tun ehe ich das Objekt übergebe oder in jeder Methode der Klasse in der das Objekt benutzt wird?

Oder wenn man z.B. einen Pfad an eine Klasse übergibt und auf diesen Pfad in mehreren Methoden zugegriffen wird, sollte man den Pfad dann bei jeder Methode neu prüfen, da er sich ja u.U. ändern könnte (weil z.B. gerade jemand die Ordnerstruktur verändert etc.) oder nur im Konstruktor?

Also ich denke, wenn man Klassen schreiben will, die wirklich sehr 'unabhängig' von der Anwendung sein sollen und sehr sicher, dann sollte man wahrscheinlich wirklich immer prüfen, aber wie macht man das so im allgemeinen, wenn man z.B. eine Anwendung schreibt und Klassen die etwas 'mehr' auf die Anwendung zugeschnitten ist, prüft man dann trotzdem alles und entsteht da ein Performanceverlust, wenn man viel prüft?

Das ist wahrscheinlich eine ziehmlich blöde Frage, aber vielleicht könnt ihr mir sagen, wie ihr das so macht.
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.06.2005, 17:56  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

argl 2-3 mal ein enter hätte deinem text gut getan

naja fehler fang ich mit ner eigenen klasse für den error_handler ab, so hab ich schonmal die möglichkeit php-seitige fehler, notices etc in ne Datei umzuleiten und den ablauf des scriptes nicht zu stören.

Zum Thema prüfen, naja wenn man sich sicher sein kann, dass der Wert nur übergeben und nicht verändert wird, dann sollte es kein problem sein ihn nur einmal zu überprüfn, jedes mal überprüfen kostet performance, das ist klar, jenachdem wie komplex die prüfung ist, macht es sich bemerkbar.

mfg
robo47
robo47 ist offline  
Alt 23.06.2005, 22:46  
Gast
 
Beiträge: n/a
Standard

Danke für Deine Antwort
 
Alt 24.06.2005, 01:37  
Gast
 
Beiträge: n/a
Standard Re: Fehler abfangen in Klassen

Zitat:
Zitat von Mai
Das ist wahrscheinlich eine ziehmlich blöde Frage, ...
Das hast Du gesagt. <ggg>

Prüfen mußt Du grundsätzlich das, was zweifelhaft ist. Und zweifelhaft sind ausnahmslos alle Daten, die vom Client stammen.

Es ist egal, wo Du prüfst. Hauptsache, Du tust es.
 
Alt 24.06.2005, 08:37  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Fehler abfangen in Klassen

Zitat:
Zitat von Mai
ich würde gerne wissen wo man Fehler am besten abfängt, in der Klasse oder in der Anwendung, die diese Klasse benutzt, oder in jeder Methode.
Das kommt darauf an, was Du machen willst.

Wenn ich z.B. $db->query($sql) aufrufe, dann verwende ich intern (also in der Methode) einen Aufruf einer Error-Klasse bzw. einer entsprechenden Methode, um eventuelle Fehler abzufangen und aufzubereiten.


Zitat:
Zitat von Mai
Damit meine ich z.B. wenn in einer Klasse bestimmte Objekte einer anderen Klasse benutzt werden, sollte ich da beim Übergeben der Objekte innerhalb der Klasse prüfen ob es wirklich Objekte sind (also z.B. mit is_object) oder sollte ich das in der Anwendung tun ehe ich das Objekt übergebe oder in jeder Methode der Klasse in der das Objekt benutzt wird?
Also, wenn Du ein Objekt brauchst, dann solltest Du auch überprüfen, ob Du ein Objekt hast. Das ist klar.
Ich mache das generell so, dass ich die Übergabeparameter von Methoden in der Klasse überprüfe. Das scheint mir sinniger zu sein, als die Anwendung, die ja auch für andere Personen als mich gedacht sein können, mit solchen Überprüfungen aufzublasen.

Ein Ansatz ist z.B., dass Du in set-Methoden überprüfst, ob der Datentyp des Übergabeparameters stimmt. Ist dies nicht der Fall wird z.B. eine Exception geschmissen, ausgewertet und es passiert irgendwas

Wenn Du dann später z.B. eine Membervariable verwendest, dann überprüfe ich eigentlich nicht.
Ich reagiere nur entsprechend auf die Fehler, die eventuell auftreten. Indem man sich Exception-Klassen (extends Exception) schreibt kann man da nette Sachen bauen.

Zitat:
Zitat von Mai
Oder wenn man z.B. einen Pfad an eine Klasse übergibt und auf diesen Pfad in mehreren Methoden zugegriffen wird, sollte man den Pfad dann bei jeder Methode neu prüfen, da er sich ja u.U. ändern könnte (weil z.B. gerade jemand die Ordnerstruktur verändert etc.) oder nur im Konstruktor?
Siehe meine obigen Bemerkungen.

Zitat:
Zitat von Mai
entsteht da ein Performanceverlust, wenn man viel prüft?
Solange Du die Überprüfung nach der Devise "So viel wie möglich, aber nicht mehr als nötig!" ablaufen lässt, sollte Dir der Performance-Einschnitt egal sein.

Zitat:
Zitat von Mai
Das ist wahrscheinlich eine ziehmlich blöde Frage
Nö. Meiner Ansicht ist das eine der wenigen Fragen, die mich in den letzten Wochen in diesem Forum interessiert hat

Grüße Ben.


EDIT:
@robo:
Zitat:
Zitat von robo47
argl 2-3 mal ein enter hätte deinem text gut getan
Sorry, aber das ist ein Witz. Ehrlich gesagt denke ich das bei Deinen Texten auf des Öfteren

Frei nach der Signatur von Idefix83:
Zitat:
Wer andern eine Grube gräbt, hat ein Grubengrabgerät
imported_Ben ist offline  
Alt 24.06.2005, 09:25  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

also ich benutze ganz gerne Klassen in Verbindung mit fast gleichnamigen Exceptionklassen dann kann man gleich mit try catch reagieren im prinzip sind Exception ja fast nichts anderes als eine weitere Kontrolstruktur

zu deinen anderen Fragen: Objekte und Pfade würde ich grundsätzlich bei jeder Übergabe von außerhalb der Klasse überpürfen also im setter

ps: ich find die Frage auch nicht blöd weil ich hab für mich selbst immer noch keine zufriedenstellende Fehlerbehandlung gefunden
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline  
Alt 24.06.2005, 09:43  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,
also ich finde eigentlich dieses Beispiel da ganz nett:
http://www.php.net/manual/de/language.exceptions.php

Da kann man sehr gut drauf aufbauen.

Grüße Ben.
imported_Ben ist offline  
Alt 24.06.2005, 09:58  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

ja so in etwa benutze ich das auch nur das meine Exception halt ne StandartException sind wo jediglich der Name anders ist

aber richitg zufrieden stellt mich das immer noch nicht aber man kann mit leben
HStev ist offline  
Alt 24.06.2005, 10:10  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich würde eben gerne das Script ohne Abbruch etc. weiterlaufen lassen, so dass der User zwar die gewünschte Funktionalität nicht ausführen kann, allerdings trotzdem noch die Möglichkeit hat die Anwendung zu nutzen.

Soweit bin ich aber leider noch nicht.
Wenn da jemand Ideen oder Ansätze hat .. ich bin ganz Ohr

Grüße Ben.
imported_Ben ist offline  
Alt 24.06.2005, 12:06  
Gast
 
Beiträge: n/a
Standard Re: Fehler abfangen in Klassen

Zitat:
Zitat von Ben
Wenn ich z.B. $db->query($sql) aufrufe, dann verwende ich intern (also in der Methode) einen Aufruf einer Error-Klasse bzw. einer entsprechenden Methode, um eventuelle Fehler abzufangen und aufzubereiten.
Mal im Ernst: welche Fehler erwartest Du eigentlich in einer DB Klasse, die den SQL Server konnektieren und die DB selektieren konnte? Wenn im SQL String alle Werte mit mysql_escape_string behandelt als Strings enthalten sind, sind Fehler nahezu (ich bin vorsichtig) ausgeschlossen. Der einzige Fehler, der dann noch auftreten kann, wäre der, das es kein Ergebnis gibt, weil absolut nix im Datensieb hängengeblieben ist.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Include fehler abfangen? fadass PHP Tipps 2005-2 16 23.12.2008 13:07
Fragen zu Klassen Kein Genie PHP Tipps 2006 3 08.05.2006 11:25
Sessions an includete Klassen übergeben Dr_Enquinox PHP Tipps 2006 4 29.04.2006 10:25
Einen Fehler bei Datein mit Klassen PHP Tipps 2006 3 17.03.2006 22:14
Fehler abfangen nieselfriem PHP Tipps 2005-2 2 10.10.2005 17:11
Fehler abfangen bei Eintrag in DB Crypi PHP Tipps 2005-2 15 18.08.2005 15:14
Fehlermeldung - aber kein fehler... Tschuu HTML, Usability und Barrierefreiheit 16 14.03.2005 15:56
Fehler abfangen bei MySQL Abfrage Dave Waterstone PHP Tipps 2005 4 21.02.2005 15:15
eval fehler abfangen PHP Tipps 2005 9 18.02.2005 19:37
[Erledigt] Alle Fehler außer Notice abfangen ? PHP-Fortgeschrittene 7 05.12.2004 16:39
[Erledigt] mysql fehler PHP Tipps 2004 2 03.11.2004 00:32
php-variblen Fehler mit JavaScript abfangen möglich? HTML, Usability und Barrierefreiheit 2 27.10.2004 01:08
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
mysql_real_escape_string - Fehler Schaelle Datenbanken 0 03.07.2004 23:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php classen fehler abfangen, notice in einer klasse abfangen, php error exception abfangen, php class fehler abfangen, zend db sql fehler abfangen

Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.