PEAR::setErrorHandling()

PEAR::setErrorHandling() – a PEAR csomagokban generált hibák kezelési módjának beállítása

Synopsis

require_once 'PEAR.php';

void PEAR::setErrorHandling ( integer $mode = = null , mixed $options = = null )

Description

A setErrorHandling() függvény meghívható mind egy objektum hagyományos metódusaként ($obj->setErrorHandling), mind statikus metódusként (PEAR::setErrorHandling). Amennyiben statikusan kerül meghívásra, a PEAR::setErrorHandling() az alapértelmezett hibakezelési viselkedést állítja be, amely minden PEAR objektumra érvényes (globális hibakezelési viselkedés). Ha egy objektum metódusaként kerül meghívásra, az $obj->setErrorHandling() csak az adott objektumra vonatkozóan változtatja meg az alapértelmezett hibakezelést (helyi hibakezelési viselkedés).

Parameter

  • integer $mode - a következő konstansok egyike:

    • PEAR_ERROR_RETURN - Amennyiben hiba következik be, egy PEAR_Error típusú objektum kerül visszaadásra a hibageneráló metódusból (ami alapértelmezésben a raiseError() függvény).

    • PEAR_ERROR_PRINT - A PEAR_ERROR_RETURN konstanshoz hasonló, de a hibaüzenet soha nem kerül kiírásra.

    • PEAR_ERROR_TRIGGER - A PEAR_ERROR_RETURN konstanshoz hasonló, de a PHP beépített trigger_error() függvénye is meghívásra kerül a PEAR_Error konstruktorában a megadott hibaüzenettel.

    • PEAR_ERROR_DIE - A szkript futása megszakad és egy hibaüzenet kerül kiírásra egy PEAR_Error objektum előállítása helyett.

    • PEAR_ERROR_CALLBACK - Ha hiba következik be, az $options paraméterben meghatározott függvény kerül meghívásra.

    • PEAR_ERROR_EXCEPTION - Ha a Zend Engine 2 rendelkezésre áll, kivétel keletkezik a PEAR_Error objektum segítségével.

  • mixed $options - a $options paraméter értéke a $mode paramétertől függ

    • A PEAR_ERROR_PRINT és a PEAR_ERROR_DIE konstansok esetében átadhatunk egy opcionális printf() formátumsztringet, ami a hibaüzenet formázásához kerül felhasználásra. A formátumsztringnek egy darab %s -t kell tartalmaznia, amelynek helyére behelyettesítésre kerül a hibaüzenet. Ezt a sztringet olyan hasznos információk közlésére használhatjuk, amelyet maga a hibaüzenet vagy a prefixe nem tartalmaz.

    • A PEAR_ERROR_TRIGGER konstansnak szüksége van egy hibaszint-konstansra (user error-level constant), amelyett a trigger_error() függvény használ (lehetséges konstansok: E_USER_NOTICE, E_USER_WARNING vagy E_USER_ERROR). Ügyeljünk rá, hogy amennyiben a hibakonstans nem egyike ezeknek az értékeknek, egy PHP figyelmeztetést idézünk elő.

    • PEAR_ERROR_CALLBACK A callback-nak egy függvény nevének kell lennie a PHP kézikönyv Pseudo-Type részében specifikált formátumnak megfelelően (vagy egy sztring, vagy egy tömb). A callback-nek egyetlen paramétert kell fogadnia, a PEAR_Error objektumot, ami a hiba keletkezésekor generálódik. Ügyeljünk rá, hogy amennyiben a callback nem egy valós függvény, egy PHP figyelmeztetést idézünk elő.

Néhány példa a setErrorHandling használatára:

<?php
require_once 'PEAR.php';
// kital&aacute;lt hibakonstans a p&eacute;ld&aacute;hoz
define('MYCLASS_ERROR_CODE'1);

// a glob&aacute;lis hibakezel&eacute;s bemutat&aacute;sa
// ebben az esetben minden PEAR error egy PHP figyelmeztet&eacute;st v&aacute;lt ki
PEAR::setErrorHandling(PEAR_ERROR_TRIGGERE_USER_WARNING);
// Figyelj&uuml;k meg, hogy a f&aacute;jl neve &eacute;s a sor sz&aacute;ma a valahol a PEAR.php f&aacute;jl PEAR_Error konstruktor&aacute;ban lesz
PEAR::raiseError('teszt figyelmeztet&eacute;s'MYCLASS_ERROR_CODE);

// az al&aacute;bbi hib&aacute;ban megjel&ouml;l&uuml;nk egy hibam&oacute;dot is, &iacute;gy fel&uuml;lb&iacute;r&aacute;ljuk a glob&aacute;lis hibakezel&eacute;st
$e PEAR::raiseError('return only'MYCLASS_ERROR_CODEPEAR_ERROR_RETURN);

PEAR::setErrorHandling(PEAR_ERROR_PRINT"Hiba: %s<br />\n");

// A "Hiba: teszt figyelmeztet&eacute;s<br />\n" sztring ker&uuml;l ki&iacute;r&aacute;sra
PEAR::raiseError('test warning'MYCLASS_ERROR_CODE);

/**
 * P&eacute;lda oszt&aacute;ly a hibakezel&eacute;s bemutat&aacute;s&aacute;ra
 * @package myClass
 */
class myClass extends PEAR {
    
/**
     * Helyi hibakezel&eacute;s bemutat&aacute;sa
     */
    
function myClass()
    {
        
// az egyik met&oacute;dus&aacute;nak megh&iacute;v&aacute;sa callback-k&eacute;nt
        
$this->setErrorHandling(PEAR_ERROR_CALLBACK, array(&$this'handleErr'));
        
// a "saj&aacute;t hibakezel&#337; f&uuml;ggv&eacute;ny...m&#369;k&ouml;dik" sz&ouml;veg ki&iacute;r&aacute;sa
        
PEAR::raiseError('saj&aacute;t hibakezel&#337; f&uuml;ggv&eacute;ny'MYCLASS_ERROR_CODE);
        
// statikus oszt&aacute;lymet&oacute;dus haszn&aacute;lata callback-k&eacute;nt
        
$this->setErrorHandling(PEAR_ERROR_CALLBACK,
            array(
'myClass''handleErrStatic'));
        
PEAR::raiseError('saj&aacute;t hibakezel&#337; f&uuml;ggv&eacute;ny'MYCLASS_ERROR_CODE);
        
// f&uuml;ggv&eacute;ny haszn&aacute;lata callback-k&eacute;nt
        
$this->setErrorHandling(PEAR_ERROR_CALLBACK'standardCallback');
        
PEAR::raiseError('saj&aacute;t hibakezel&#337; f&uuml;ggv&eacute;ny'MYCLASS_ERROR_CODE);
    }
    
    
/**
     * A konstruktor &aacute;ltal be&aacute;ll&iacute;t&aacute;sra ker&uuml;l&#337; callback f&uuml;ggv&eacute;ny
     * @param PEAR_Error A hibaobjektum
     */
    
function handleErr($error)
    {
        
$this->lastError $error->getMessage();
        print 
$error->getMessage() . "...m&#369;k&ouml;dik\n";
    }
    
    
/**
     * A konstruktor &aacute;ltal be&aacute;ll&iacute;t&aacute;sra ker&uuml;l&#337; statikus callback f&uuml;ggv&eacute;ny
     *
     * &Uuml;gyelj&uuml;nk r&aacute;, hogy PHP 5-ben a $this v&aacute;ltoz&oacute; nem ker&uuml;l be&aacute;ll&iacute;t&aacute;sra,
     * ha a met&oacute;dus statikusk&eacute;nt ("static") van deklar&aacute;lva. PHP 4-ben a
     * $this v&aacute;ltoz&oacute; be van &aacute;ll&iacute;tva, de nem a myClass objektumra mutat, &iacute;gy
     * ne haszn&aacute;ljuk!
     * @param PEAR_Error A hibaobjektum
     * @static
     */
    
function handleErrStatic($error)
    {
        print 
'statikus ' $error->getMessage() . "...m&#369;k&ouml;dik\n";
    }
}

/**
 * @param PEAR_Error A hibaobjektum
 */
function standardCallback($error)
{
    print 
'hagyom&aacute;nyos callback: ' $error->getMessage();
}
// Az al&aacute;bbi k&oacute;d a k&ouml;vetkez&#337; &uuml;zeneteket jelen&iacute;ti meg:
// "saj&aacute;t hibakezel&#337; f&uuml;ggv&eacute;ny...m&#369;k&ouml;dik"
// "statikus saj&aacute;t hibakezel&#337; f&uuml;ggv&eacute;ny...m&#369;k&ouml;dik"
// "hagyom&aacute;nyos callback: saj&aacute;t hibakezel&#337; f&uuml;ggv&eacute;ny"
$mine = new myClass;

PEAR::setErrorHandling(PEAR_ERROR_DIE);
// megszak&iacute;tja a szkript fut&aacute;s&aacute;t az "oops" hiba&uuml;zenettel
PEAR::raiseError('oops'MYCLASS_ERROR_CODE);
?>