tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
440
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    deAndro deAndro ist offline Mitglied Silber
    Registriert seit
    Jul 2010
    Beiträge
    87
    Hi,...

    ich möchte mein Error Handling mehr Strukturieren und jede Klasse soll ein eigenes Error Handling bekommen.

    Das hier geht:
    Code :
    1
    2
    3
    4
    5
    6
    
    $onError = set_error_handler("errorHandler");
        
        function errorHandler($errno, $errstr, $errfile, $errline, $errContext)
        {
            echo "$errno, $errstr, $errfile, $errline, $errContext";
        }

    Aber wie mach ich das innerhalb einer Klasse?
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    class testClass
        {
            private $cErrorHandler;
            
            function __construct()
            {
                $this->cErrorHandler = set_error_handler("$this->errorHandling");
                echo $x;// soll ne fehlermeldung werfen
            }
            
            function errorHandling($errno, $errstr, $errfile, $errline, $errContext)
            {
                echo "$errno, $errstr, $errfile, $errline, $errContext";
            }
        }

    cu s00n
    deAndro!
     

  2. #2
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    Statt "$this->errorHandling" muss es array($this, 'errorHandling'); heißen.

    Siehe Live-Beispiel: http://codepad.org/gpOtcrib/.


    Allerdings werden alle anderen Error-Handler bei diesem Vorgehen überschrieben. Ist meiner Meinung nach nicht sehr elegant

    Aber ich frage mich, wieso soll jede Klasse seine eigene Fehlerbehandlungs-Routine haben?
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  3. #3
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Der große Vorzug von Klassen ist, das man Exceptions werfen kann. Diese sollten zentral abgefangen und behandelt werden. Ein eigener Errorhandler ist IMHO bei OOP sinnlos und kontraproduktiv, denn er verändert das Laufzeitverhalten unkontrollierbar.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  4. #4
    Avatar von Sebastian Schmidt
    Sebastian Schmidt Sebastian Schmidt ist offline Mitglied Silber
    Registriert seit
    Dec 2002
    Ort
    Hannover
    Beiträge
    75
    Zitat Zitat von ComFreek Beitrag anzeigen
    Statt "$this->errorHandling" muss es array($this, 'errorHandling'); heißen.

    Siehe Live-Beispiel: http://codepad.org/gpOtcrib/.


    Allerdings werden alle anderen Error-Handler bei diesem Vorgehen überschrieben. Ist meiner Meinung nach nicht sehr elegant

    Aber ich frage mich, wieso soll jede Klasse seine eigene Fehlerbehandlungs-Routine haben?
    Was du auch verlinken wolltest:
    404 Not Found
    The resource could not be found.

     

  5. #5
    Avatar von Raisch
    Raisch Raisch ist offline extraordinary bit
    Registriert seit
    Aug 2011
    Ort
    Berlin
    Beiträge
    333
    Zitat Zitat von saftmeister Beitrag anzeigen
    Der große Vorzug von Klassen ist, das man Exceptions werfen kann. Diese sollten zentral abgefangen und behandelt werden. Ein eigener Errorhandler ist IMHO bei OOP sinnlos und kontraproduktiv, denn er verändert das Laufzeitverhalten unkontrollierbar.
    This!

    @deAndro Schau dir mal diese Beiträge an:
    PHP Exception Handling
    PHP Exception Manual
    set_exception_handler

    Gruß und guten Rutsch.
    Geändert von Raisch (31.12.11 um 13:55 Uhr)
     

  6. #6
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Zitat Zitat von Raisch Beitrag anzeigen
    This!

    Schau dir mal diese Beiträge an:

    Gruß und guten Rutsch.
    Was willst du mir damit sagen? Ich weiß schon wie man Exceptions benutzt. deAndro hat aber nicht set_exception_handler() sondern set_error_handler() benutzt. Das ist meiner Meinung kontraproduktiv.

    EDIT: Ebenfalls guten Rutsch.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  7. #7
    Avatar von Raisch
    Raisch Raisch ist offline extraordinary bit
    Registriert seit
    Aug 2011
    Ort
    Berlin
    Beiträge
    333
    Zitat Zitat von saftmeister Beitrag anzeigen
    Was willst du mir damit sagen? Ich weiß schon wie man Exceptions benutzt. deAndro hat aber nicht set_exception_handler() sondern set_error_handler() benutzt. Das ist meiner Meinung kontraproduktiv.

    EDIT: Ebenfalls guten Rutsch.
    Mein Beitrag war an den Threadstarter gerichtet nicht an dich. Das "This" sollte meine Zustimmung zu deinem Beitrag zeigen.

    Hab meinen Beitrag mal bearbeitet damit das besser zu erkennen ist.

    Gruß
     

  8. #8
    deAndro deAndro ist offline Mitglied Silber
    Registriert seit
    Jul 2010
    Beiträge
    87
    ok, sorry. *warAnDemTagWohlDaneben*
     

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 14.12.09, 21:03
  2. Innerhalb einer Klasse eine Instanz einer anderen Klasse
    Von HackerNeo im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 17.11.09, 13:08
  3. Antworten: 7
    Letzter Beitrag: 11.09.08, 16:19
  4. Antworten: 4
    Letzter Beitrag: 09.07.05, 00:19
  5. Array leersetzen innerhalb einer klasse
    Von DarkSummer im Forum PHP
    Antworten: 2
    Letzter Beitrag: 05.04.03, 11:40