PHP probblem mit set_error_handler()

Fragen zum Thema HTML, JavaScript, PHP
Antworten
Uzaku
Beiträge: 55
Registriert: So Aug 09, 2009 1:47 pm

PHP probblem mit set_error_handler()

Beitrag von Uzaku » Mi Jul 28, 2010 1:48 pm

Hi,
ich habe hier folgenden Code:

Code: Alles auswählen

<?php
if(!defined("ERROR_HANDLING_H")){
define("ERROR_HANDLING_H", "1");
//Einige Errorhandling Routinen

function error($errno, $errstr)
{
  //...
}

function notice($errno, $errstr)
{
  //...
}

function initErrorHandling()
{
    static $aufruf = 0;
    if($aufruf > 0) return;
    
    if(!set_error_handler("error", E_USER_ERROR)) echo"konnte error nicht zuweisen";
    if(!set_error_handler("notice", E_USER_NOTICE)) echo "konnte notice nicht zuweisen"; 
    $aufruf++; 
}

}

?>
so, die zuweisung von notice() funktioniert, aber die von error nicht, er gibt jedesmal das Echo aus, und nach endlosem experimentieren, u.a. mit den Namen der Funktionen, bin ich zu dem Schluss gekommen, dass man E_USER_ERROR keinen eigenen Handler zuwesen kann, stimmt das?
Falls nicht, was ich stark hoffe: warum funktioniert das nicht?

grüße Uzaku

PS: gibts hier eig. Syntaxhighlighting?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8861
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PHP probblem mit set_error_handler()

Beitrag von Xin » Mi Jul 28, 2010 4:28 pm

http://php.net/manual/en/function.set-error-handler.php

Wenn ich da nach unten scrolle sehe ich Funktionen die folgende Signatur haben:

Code: Alles auswählen

function myErrorHandler($errno, $errstr, $errfile, $errline)
Die Parameter sind zwar optional, aber... PHP?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Uzaku
Beiträge: 55
Registriert: So Aug 09, 2009 1:47 pm

Re: PHP probblem mit set_error_handler()

Beitrag von Uzaku » Mi Jul 28, 2010 5:36 pm

Daran liegt es nicht, da der 2te Aufruf funktioniert.
Ich habe rausgefunden, dass wenn ich den ersten aufruf auskommentiere, der 2te auch nicht mehr funktioniert.
Das brachte mich auf die Idee einen dummie aufruf an den anfang zu setzen.

Code: Alles auswählen

function foo(){}

set_error_handler("foo", E_USER_ERROR);
Danach gibt das set_error_handler für "error" keinen fehler mehr aus, aber mein Callback wird trotzdem nicht aufgerufen....
Wirklich merkwürdig.

Dominik
Beiträge: 381
Registriert: Mo Jul 07, 2008 9:39 pm

Re: PHP probblem mit set_error_handler()

Beitrag von Dominik » Mi Jul 28, 2010 5:54 pm

Was willst du den erreichen ?

http://www.php.net/manual/de/class.errorexception.php
Kennst du ja?
Rechtschreibefehler sind gewollt und dienen der Unterhaltung

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8861
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PHP probblem mit set_error_handler()

Beitrag von Xin » Mi Jul 28, 2010 6:12 pm

Uzaku hat geschrieben:Daran liegt es nicht, da der 2te Aufruf funktioniert.
Ich habe rausgefunden, dass wenn ich den ersten aufruf auskommentiere, der 2te auch nicht mehr funktioniert.
Wersagt eigentlich, dass es mehr als einen ErrorHandler gibt?
Das lässt das PHP-Manual für mich nicht vermuten, denn differenzieren im Handler nochmal schön brav, welches Problem überhaupt vorliegt.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Uzaku
Beiträge: 55
Registriert: So Aug 09, 2009 1:47 pm

Re: PHP probblem mit set_error_handler()

Beitrag von Uzaku » Do Jul 29, 2010 10:28 am

Das war jetzt eiin sehr guter Hinweis, der Promt zur lösung des Problems geführt hat :)
Ich bin iwie davon ausgegangen, dass es einen handler pro state gibt, aber du hast recht, wäre merkwürdig, wenn dass sie das extra nochmal dieferenzieren

Antworten