php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 11-03-2004, 18:50
php_rookie
 Junior Member
Links : Onlinestatus : php_rookie ist offline
Registriert seit: Dec 2003
Beiträge: 224
php_rookie ist zur Zeit noch ein unbeschriebenes Blatt
Standard php4: try/catch - alternativen?

hi!

wie handhabt ihr das eigentlich mit der fehlerbehandlung unter php? php4 bringt ja keine try/catch anweisungen mit. gibt es brauchbare patterns als alternative?

wenn eine funktion fehler produzieren kann, speichere ich den fehlertext bislang in ein array:
PHP-Code:
$error[] =" fehlertext"
wenn in der selben funktion werte aus einer datenbank geholt werden, speichere ich die werte als assiziatives array $value.

$error und $value werden zu einer variable $return zusammengefasst, die als rückgabewert der funktion dient. wenn fehler aufgetreten sind, liefert
PHP-Code:
isset($return['error']) 
true, ansonsten false und leitet so ggf. eine fehlerkorrektur ein.

der ansatz funktioniert zwar soweit, aber eine wirkliche alternative zu try/catch erscheint er mir nicht.
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 11-03-2004, 22:33
Pascal P.
 Member
Links : Onlinestatus : Pascal P. ist offline
Registriert seit: Dec 2001
Ort: Pforzheim
Beiträge: 420
Pascal P. ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Es gibt noch eine andere Möglichkeit.
Du könntest mit Hilfe der "Funktionen zur Ausgabesteuerung"
Den Buffer, bevor die Ihn ausgibt auf Fehler überprüfen. Wenn Skriptfehler vorhanden sind, die das Skript abschmieren lassen hast du das herausgefunden, kannst dir den Fehler in eine Variable schreiben, clearst den Buffer wieder und schreibst z. B. deine eigene Fehlerprotokollseite oder reagierst irgendwie anders.
__________________
Ans Ziel kommt nur der, der auch eins hat. www.e-cross.info
Mit Zitat antworten
  #3 (permalink)  
Alt 12-03-2004, 07:57
rythms
 Junior Member
Links : Onlinestatus : rythms ist offline
Registriert seit: Jun 2003
Beiträge: 219
rythms ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sowas .. ?
PHP-Code:
if (!versuche_etwas()) {
    return 
FALSE;

in meiner sql klasse beispielsweise, teste ich nach jeder query einfach mit einer methode ob ein fehler auftrat (mysql_errno > 0 zurückgibt), wenn das der fall ist wird FALSE zurückgegeben und der fehler kann weiterbehandelt werden.

anstelle des returns, kann man auch erst noch einene beliebigen block code parsen lassen und dann erst aus der methode springen.
Mit Zitat antworten
  #4 (permalink)  
Alt 12-03-2004, 09:46
Pascal P.
 Member
Links : Onlinestatus : Pascal P. ist offline
Registriert seit: Dec 2001
Ort: Pforzheim
Beiträge: 420
Pascal P. ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So kann man es auch machen, jedoch sind hier deine Möglichkeiten sehr niedrig gesteckt. Da du ja selbst immer sagen muss "Wenn Fehler auftritt, dann mache...".
Mit dem Vorschlag von mir, ist es dir möglich diese Fehler (Parserfehler, etc) von PHP abfangen zu lassen.
__________________
Ans Ziel kommt nur der, der auch eins hat. www.e-cross.info
Mit Zitat antworten
  #5 (permalink)  
Alt 12-03-2004, 11:07
Coragon Rivito
 Master
Links : Onlinestatus : Coragon Rivito ist offline
Registriert seit: Oct 2002
Ort: Mils/AT
Beiträge: 908
Coragon Rivito ist zur Zeit noch ein unbeschriebenes Blatt
Coragon Rivito eine Nachricht über ICQ schicken Coragon Rivito eine Nachricht über AIM schicken Coragon Rivito eine Nachricht über Yahoo! schicken
Standard

also ich hatte bisher auch immer ein $error array ..
am ende der funktion habe ich abgefrage ob das array leer ist, wenn nein wird false oder ne entsprechende konstante oder das $error array selbst zurückgegeben ..
je nach zweck halt unterschiedlich ..
in einer klassen methode die konstante .. weil ich da weiß dass wenn ich nen fehler hab, welcher das sein muss
bei einer normalen funktion gibts ein false ..
wenn ich ein formular überprüfe dann das array, dieses wird dann zusammengeführt und als fehlermeldung auf der seite eingegeben, dass username / passwort nicht passt und solche scherze
__________________
mfg,
Coragon
Mit Zitat antworten
  #6 (permalink)  
Alt 12-03-2004, 14:18
php_rookie
 Junior Member
Links : Onlinestatus : php_rookie ist offline
Registriert seit: Dec 2003
Beiträge: 224
php_rookie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
also ich hatte bisher auch immer ein $error array ..
am ende der funktion habe ich abgefrage ob das array leer ist, wenn nein wird false oder ne entsprechende konstante oder das $error array selbst zurückgegeben ..
damit lassen sich funktionen verwirklichen, die keinen oder nur einen rückgabewert und beliebig viele fehlermeldungen zurückgeben können. nur was, wenn ebenso beliebig viele rückgabewerte verlangt werden?

beispiel: eintrag in eine datenbank.

die funktion überprüft, ob die formulardaten korrekt aufgefüllt wurden und speichert entsprechende fehler- oder erfolgsmeldungen in ein array. wenn keine fehler aufgetreten sind, werden die daten in die datenbank geschrieben und die werte, die in die datenbank geschrieben wurden als array zurückgegeben. falls fehler aufgetreten sind wird entsprechend das fehler-array zurückgegeben.
Mit Zitat antworten
  #7 (permalink)  
Alt 12-03-2004, 15:11
rythms
 Junior Member
Links : Onlinestatus : rythms ist offline
Registriert seit: Jun 2003
Beiträge: 219
rythms ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Pascal P.
So kann man es auch machen, jedoch sind hier deine Möglichkeiten sehr niedrig gesteckt. Da du ja selbst immer sagen muss "Wenn Fehler auftritt, dann mache...".
Mit dem Vorschlag von mir, ist es dir möglich diese Fehler (Parserfehler, etc) von PHP abfangen zu lassen.
dein vorschlag ist an sich nicht verkehrt, allerdings bedeutet er mir einen zu großen performance verlust.

meine methode reicht mir, im zusammenhang mit sauberem code aus um alle fehler korrekt abzufangen.

etwas anderes machst du ja ansich auch nicht, nur dass deine überprüfung einmal erfolgt, und meine mehrmals.
Mit Zitat antworten
  #8 (permalink)  
Alt 12-03-2004, 15:51
php_rookie
 Junior Member
Links : Onlinestatus : php_rookie ist offline
Registriert seit: Dec 2003
Beiträge: 224
php_rookie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

danke für die antwort @ rythmus, aber:
PHP-Code:
if (!versuche_etwas()) {

    return 
FALSE;


geht etwas am thema vorbei. es funktioniert, wie gesagt, nur, wenn kein rückgabewert, sondern nur fehlermeldungen verlangt werden.

der rückgabewert einer funktion soll in einer neuen variablen gespeichert werden und entsprechend verarbeitet werden:

PHP-Code:
$foo versuche_etwas();

if (isset(
$foo['error'])) {
    [
fehlermeldungen ($foo['error']) ausgeben]
} else {
    [
erfolgsmeldungen ($foo['value']) ausgeben]

das ist mein ansatz im groben bisher und dafür würd ich alternativen suchen.
Mit Zitat antworten
  #9 (permalink)  
Alt 12-03-2004, 19:23
rythms
 Junior Member
Links : Onlinestatus : rythms ist offline
Registriert seit: Jun 2003
Beiträge: 219
rythms ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von php_rookie
danke für die antwort @ rythmus, aber:
PHP-Code:
if (!versuche_etwas()) {

    return 
FALSE;


geht etwas am thema vorbei. es funktioniert, wie gesagt, nur, wenn kein rückgabewert, sondern nur fehlermeldungen verlangt werden.

der rückgabewert einer funktion soll in einer neuen variablen gespeichert werden und entsprechend verarbeitet werden:

PHP-Code:
$foo versuche_etwas();

if (isset(
$foo['error'])) {
    [
fehlermeldungen ($foo['error']) ausgeben]
} else {
    [
erfolgsmeldungen ($foo['value']) ausgeben]

das ist mein ansatz im groben bisher und dafür würd ich alternativen suchen.
das ist nicht ganz richtig.
meine funktion kann gerne auch etwas zurückgeben.
entweder halt den erwarteteten wert, oder eben false.
PHP-Code:
$foo versuche_etwas() 
if (!
$foo) {} 
Mit Zitat antworten
  #10 (permalink)  
Alt 13-03-2004, 13:25
php_rookie
 Junior Member
Links : Onlinestatus : php_rookie ist offline
Registriert seit: Dec 2003
Beiträge: 224
php_rookie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
entweder halt den erwarteteten wert, oder eben false.
wie entscheidest du dann, ob es sich bei dem zurückgegebenen wert um gewünschte werte aus der datenbank, oder um fehlermeldungen handelt? beides wird in einem array gespeichert.
Mit Zitat antworten
  #11 (permalink)  
Alt 14-03-2004, 22:57
rythms
 Junior Member
Links : Onlinestatus : rythms ist offline
Registriert seit: Jun 2003
Beiträge: 219
rythms ist zur Zeit noch ein unbeschriebenes Blatt
Standard

OffTopic:
blöde datenbank arbeiten!


wie bereits beschrieben, wenn FALSE zurückgegeben wird ist ein fehler aufgetreten.
wenn etwas anderes als false kommt, ist alles in ordnung.
wenn ich mehr fehlerinformationen brauche, lasse ich die mir von der methode "versuche_etwas()" in einem array, das als variable meiner klasse existiert speichern.
Mit Zitat antworten
  #12 (permalink)  
Alt 15-03-2004, 10:21
php_rookie
 Junior Member
Links : Onlinestatus : php_rookie ist offline
Registriert seit: Dec 2003
Beiträge: 224
php_rookie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

und wie bereits gesagt, das deckt sich nicht mit meiner frage und geht am thema vorbei. leider.

wenn nicht false zurück gegeben wird, kann nur EIN array zurückgegeben werden. dieses array beinhaltet ENTWEDER die gewünschten werte aus der datenbank, ODER fehlermeldungen. in einzelfällen soll jedoch beides möglich sein, also fehlermeldungen UND werte. es ist mit deiner methode nicht möglich zu unterscheiden, ob in dem zurückgegebenen array fehlermeldungen oder die gewünschten werte gespeichert sind.

mit try/catch kann sehr wohl unterschieden werden. es wird immer ein array mit den gewünschten werten zurückgegeben und falls fehler aufgetreten sind, wird eine exception geworfen und aufgefangen.

nunja. solang php5 noch nicht released wurde, werd ich wohl bei meiner methode bleiben.
Mit Zitat antworten
  #13 (permalink)  
Alt 15-03-2004, 13:51
KillerGod2000
 Junior Member
Links : Onlinestatus : KillerGod2000 ist offline
Registriert seit: Oct 2002
Beiträge: 118
KillerGod2000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

als ganz gute alternative auch das hier: http://www.php.net/manual/de/functio...or-handler.php
Mit Zitat antworten
  #14 (permalink)  
Alt 15-03-2004, 17:12
php_rookie
 Junior Member
Links : Onlinestatus : php_rookie ist offline
Registriert seit: Dec 2003
Beiträge: 224
php_rookie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

auf den ersten blick genau das was ich haben wollte, danke schön!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

Microweber CMS

Open source, drag and drop website builder

13.01.2020 Berni | Kategorie: HTML5/ EDITOR
PhoneGap Apps mit JS, CSS3 und HTML5 erstellen ansehen PhoneGap Apps mit JS, CSS3 und HTML5 erstellen

PhoneGap, Framework zur Erstellung hybrider Applikationen für mobile Endgeräte.

13.01.2020 Berni | Kategorie: App-Entwicklung
Bo)Tickets

Bo)Tickets bietet Ihnen eine Schnittstelle für Kundenanfragen an. In dem Script definieren Sie Supportbereiche, also zum Beispiel „Technik, Buchhaltung, Support“. Ihre Kunden können dann über ein Formular eine Anfrage abschicken.

31.12.2019 bocombo | Kategorie: PHP/ Ticketsystem
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:25 Uhr.