Entwickler-Ecke
Programmiersprachen (Server) - [php]Rückgabewert boolean => wenn false, dann zus. ErrorMsg
Marco D. - Di 08.05.07 17:57
Titel: [php]Rückgabewert boolean => wenn false, dann zus. ErrorMsg
Wenn man eine php-Funktion hat, deren Rückgabewert boolean ist und dieser den Wert false annimmt, dann möchte ich, dass dementsprechend auch gleich die dazugehörige Fehlermeldung als string abgerufen werden kann. Bis jetzt mache ich das so:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| public function DeletePage($id,&$errormsg) { ... if (!$result) { $errormsg = "bla"; return false; } else return true; } |
Geht das auch einfacher?
Moderiert von
Klabautermann: Topic aus Off Topic verschoben am Mi 09.05.2007 um 17:18
GTA-Place - Di 08.05.07 18:28
Ich kenn nur eine leicht andere Methode:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| function XYZ() { global $errormsg; $errormsg = 'Blup'; Return False; }
$errormsg = ''; if (XYZ() === false) echo($errormsg); |
Das global macht die Variable in der Funktion bekannt. Ist ein wenig einfacher, als die Variable zu übergeben.
blackbirdXXX - Di 08.05.07 18:28
Titel: Re: [php]Rückgabewert boolean => wenn false, dann zus. Error
Marco D. hat folgendes geschrieben: |
Wenn man eine php-Funktion hat, deren Rückgabewert boolean ist und dieser den Wert false annimmt, dann möchte ich, dass dementsprechend auch gleich die dazugehörige Fehlermeldung als string abgerufen werden kann. Bis jetzt mache ich das so:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| public function DeletePage($id,&$errormsg) { ... if (!$result) { $errormsg = "bla"; return false; } else return true; } | Geht das auch einfacher? |
Es geht zumindest eleganter:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| <?php
class ApplicationException extends Exception {};
function handle_application_exception($exception) { if ($exception instanceof ApplicationException) { include 'template/application_error.php'; } else { } }
set_exception_handler('handle_application_exception');
class Page { public function Delete() { ... if (!$result) throw new ApplicationError('...'); return $result; } }
$mypage = new Page(42); try { $mypage->Delete(); } catch (ApplicationError $e) { ... } |
Wenn der Fehler nicht gefangen wird gehts an handle_application_exception weiter.
Marco D. - Mi 09.05.07 17:16
@blackbird:
Warum genau ist deine Variante eleganter? Welche Vorteile hat sie bzw. welche Nachteile hat meine Variante? Warum sollte ich gerade Exceptions verwenden?
blackbirdXXX - Mi 09.05.07 17:41
Marco D. hat folgendes geschrieben: |
@blackbird:
Warum genau ist deine Variante eleganter? Welche Vorteile hat sie bzw. welche Nachteile hat meine Variante? Warum sollte ich gerade Exceptions verwenden? |
Weil die Dinger genau dafür entwickelt wurden und PHP sie Gott sei Dank nach 10 Jahren eingebaut hat.
Christian S. - Mi 09.05.07 18:04
blackbirdXXX hat folgendes geschrieben: |
Marco D. hat folgendes geschrieben: | @blackbird:
Warum genau ist deine Variante eleganter? Welche Vorteile hat sie bzw. welche Nachteile hat meine Variante? Warum sollte ich gerade Exceptions verwenden? |
Weil die Dinger genau dafür entwickelt wurden und PHP sie Gott sei Dank nach 10 Jahren eingebaut hat. |
"Es gibt sie, also muss man sie benutzen"? Das ist keine Antwort auf die Frage. "Die Dinger" sind kein Selbstzweck. Welchen Vorteil bieten sie hier?
Marco D. - Mi 09.05.07 21:43
Ich gebe Christian Recht :!: Du hast die Frage nicht beantwortet. ;) Was bringt mir sowas. Meine Variante ist bedeutend kürzer. ;)
blackbirdXXX - Do 10.05.07 00:06
Der Vorteil von Exceptions ist, dass man sie nicht immer direkt fangen muss. In komplexeren Anwendungen gibt es tausende Stellen wo Fehler auftreten können. Viele fang ich dann einfach nicht und lasse sie (in PHP von einem Error Handler) bzw in Ruby und Python von einer WSGI/Rack Middleware abfangen, mir eine E-Mail zustellen und dem Benutzer eine vereinfachte Fehlermeldung präsentieren.
Fehler vom Type `ApplicationException` oder soetwas in der Richtung bekommen dann keinen Mailversand weil sie bestimmte gewollte Zustände der Anwendung präsentieren (zb Redirect auf andere URL, Forumlardaten nicht komplett ausgefüllt etc).
Marco D. - Do 10.05.07 13:57
@blackbird:
Wie genau funktioniert das mit dem Error Handler in PHP?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!