void PEAR::setErrorHandling (
integer $mode
= = null
,
mixed $options
= = null
)
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).
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ált hibakonstans a példához
define('MYCLASS_ERROR_CODE', 1);
// a globális hibakezelés bemutatása
// ebben az esetben minden PEAR error egy PHP figyelmeztetést vált ki
PEAR::setErrorHandling(PEAR_ERROR_TRIGGER, E_USER_WARNING);
// Figyeljük meg, hogy a fájl neve és a sor száma a valahol a PEAR.php fájl PEAR_Error konstruktorában lesz
PEAR::raiseError('teszt figyelmeztetés', MYCLASS_ERROR_CODE);
// az alábbi hibában megjelölünk egy hibamódot is, így felülbíráljuk a globális hibakezelést
$e = PEAR::raiseError('return only', MYCLASS_ERROR_CODE, PEAR_ERROR_RETURN);
PEAR::setErrorHandling(PEAR_ERROR_PRINT, "Hiba: %s<br />\n");
// A "Hiba: teszt figyelmeztetés<br />\n" sztring kerül kiírásra
PEAR::raiseError('test warning', MYCLASS_ERROR_CODE);
/**
* Példa osztály a hibakezelés bemutatására
* @package myClass
*/
class myClass extends PEAR {
/**
* Helyi hibakezelés bemutatása
*/
function myClass()
{
// az egyik metódusának meghívása callback-ként
$this->setErrorHandling(PEAR_ERROR_CALLBACK, array(&$this, 'handleErr'));
// a "saját hibakezelő függvény...működik" szöveg kiírása
PEAR::raiseError('saját hibakezelő függvény', MYCLASS_ERROR_CODE);
// statikus osztálymetódus használata callback-ként
$this->setErrorHandling(PEAR_ERROR_CALLBACK,
array('myClass', 'handleErrStatic'));
PEAR::raiseError('saját hibakezelő függvény', MYCLASS_ERROR_CODE);
// függvény használata callback-ként
$this->setErrorHandling(PEAR_ERROR_CALLBACK, 'standardCallback');
PEAR::raiseError('saját hibakezelő függvény', MYCLASS_ERROR_CODE);
}
/**
* A konstruktor által beállításra kerülő callback függvény
* @param PEAR_Error A hibaobjektum
*/
function handleErr($error)
{
$this->lastError = $error->getMessage();
print $error->getMessage() . "...működik\n";
}
/**
* A konstruktor által beállításra kerülő statikus callback függvény
*
* Ügyeljünk rá, hogy PHP 5-ben a $this változó nem kerül beállításra,
* ha a metódus statikusként ("static") van deklarálva. PHP 4-ben a
* $this változó be van állítva, de nem a myClass objektumra mutat, így
* ne használjuk!
* @param PEAR_Error A hibaobjektum
* @static
*/
function handleErrStatic($error)
{
print 'statikus ' . $error->getMessage() . "...működik\n";
}
}
/**
* @param PEAR_Error A hibaobjektum
*/
function standardCallback($error)
{
print 'hagyományos callback: ' . $error->getMessage();
}
// Az alábbi kód a következő üzeneteket jeleníti meg:
// "saját hibakezelő függvény...működik"
// "statikus saját hibakezelő függvény...működik"
// "hagyományos callback: saját hibakezelő függvény"
$mine = new myClass;
PEAR::setErrorHandling(PEAR_ERROR_DIE);
// megszakítja a szkript futását az "oops" hibaüzenettel
PEAR::raiseError('oops', MYCLASS_ERROR_CODE);
?>