[PHP] Backwards compattible errorhandler

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Ik ben bezig met een error handler en in de php manual staat dat sinds 4.3.0:
Instead of a function name, an array containing an object reference and a method name can also be supplied as the error_handler.

Nu heb ik dus een error handler als class geschreven wat dus alleen op php 4.3.0 en hoger werkt.

Het volgende heb ik bedacht als work around
PHP:
1
2
3
4
5
if (version_compare(PHP_VERSION, "4.3.0", ">=")) {
    $oldErrorHandler = set_error_handler(array($oErrorHandler, 'MyErrorhandler'));
} else {
    $oldErrorHandler = set_error_handler('MyErrorhandler');
}

en de work around functie:
PHP:
1
2
3
4
5
6
7
8
function MyErrorhandler($iErrNo, $sErrStr, $sErrFile, $iErrLine, $aContext) {
    global $oTemplate;
    static $oErrorHandler;
    if (!isset($oErrorHandler)) {
        $oErrorHandler = new ErrorHandler($oTemplate,'error_message.tpl');
    }
    $oErrorHandler->MyErrorhandler($iErrNo, $sErrStr, $sErrFile, $iErrLine, $aContext);
}

Met ErrorHandler de class waar mijn errorhandler in zit.

Theoretisch zou dit moeten werken maar ik heb geen idee of het ook in de praktijk werkt (heb alleen PHP 5.0.4 als test omgeving).

Heeft iemand hier ervaring mee en denken jullie dat het zo zou moeten werken voor PHP versies < 4.3.0?

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Ik lees toch duidelijk "can also". Alsin, sinds 4.3.0 is het deprecated.
De set_error_handler(functie); methode werkt dus ook gewoon <4.3.0

edit:
Volgens PHP.net werkt het sinds 4.0.1 via deze methode.

[ Voor 41% gewijzigd door frickY op 29-07-2005 12:48 ]


Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
frickY schreef op vrijdag 29 juli 2005 @ 12:47:
Ik lees toch duidelijk "can also". Alsin, sinds 4.3.0 is het deprecated.
De set_error_handler(functie); methode werkt dus ook gewoon <4.3.0

edit:
Volgens PHP.net werkt het sinds 4.0.1 via deze methode.
Ja dat weet ik wel maar het punt is dat mijn errorhandler functie in een class zit en dat dat pas vanaf PHP 4.3.0 werkt. Voor versies ouder dan 4.3.0 heb ik dus die workaround bedacht waarmee ik indirect de error handler in een class aanspreek en daar ging mijn vraag over.

Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Inmiddels ben ik er achter dat het gewoon werkt op PHP 4.1.2 dus dit topic kan het archief in :)