void PEAR::setErrorHandling (
integer $mode
= = null
,
mixed $options
= = null
)
setErrorHandling() może być wywołana zarówno jako typowa metoda obiektu ($obj->setErrorHandling) jak również jako statyczna metoda (PEAR::setErrorHandling). Jeśli wywołana statycznie, PEAR::setErrorHandling() ustawia obsługę błędów dla wszystkich obiektów PEAR (globalna obsługa błędów). Jeśli wywołana jako metoda obiektu $obj->setErrorHandling() ustawia domyślną obsługę błędu tylko dla tego obiektu (lokalna obsługa błędu).
integer $mode
- jedna z poniższych stałych
PEAR_ERROR_RETURN Jeśli wystąpi bład, zwracany jest PEAR_Error z metody generacji błędu (zazwyczaj raiseError().)
PEAR_ERROR_PRINT Podobnie jak PEAR_ERROR_RETURN, jednak dodatkowo zostanie wyświetlony komunikat o błędzie.
PEAR_ERROR_TRIGGER Podobnie jak PEAR_ERROR_RETURN, jednak wbudowana w PHP funkcja trigger_error() zostanie wywołana w konstruktorze PEAR_Error z przekazanym komunikatem błędu.
PEAR_ERROR_DIE Skrypt zakończy działanie i komunikat o błedzie zostanie wyświetlony w chwili tworzenia PEAR_Error.
PEAR_ERROR_CALLBACK Jeśli wystąpi bład,
funkcja zwrotna przekazana w $options
jest
wywołana.
PEAR_ERROR_EXCEPTION Jeśli obecny jest silnik Zend Engine 2, zostanie wywołany przy użyciu obiektu PEAR_Error.
mixed $options
- wartość dla $options
zależna od $mode
PEAR_ERROR_PRINT oraz PEAR_ERROR_DIE wspierają dodatkowy ciąg znaków printf() używany podczas wyświetlania komunikatu o błedzie. Ten ciąg znaków powinien zawierać pojedynczy %s, który będzie użyty do wstawienia komunikatu o błedzie. Użyj tego do zawarcia komunikatu o błedzie w innych pożytecznych informacjach nie dołączonych w prefiksie komunikatu lub samym komunikacie.
PEAR_ERROR_TRIGGER wymaga od użytkownika stałej okreslającej poziom błedu używany przez trigger_error() (możliwe wartości: E_USER_NOTICE, E_USER_WARNING lub E_USER_ERROR). Pamiętaj, że jeśli stała ta nie jest jedną z tych wartości, wywołane zostanie ostrzeżenie PHP.
PEAR_ERROR_CALLBACK Funkcja callback musi być funkcją w formacie opisanym w sekcji Pseudo-Typ podręcznika PHP (ciąg znaków lub tablica). Funkcja musi przyjmować jeden parametr, obiekt PEAR_Error wygenerowany przez warunek błędu. Jeśli nie jest to prawidłowa funkcja callback, wywołane zostanie ostrzeżenie PHP.
Oto kilka sposobów użycia setErrorHandling:
<?php
require_once 'PEAR.php';
// fikcyjna stała specjalnie dla tego przykładu
define('MYCLASS_ERROR_CODE', 1);
// demonstracja globalnej obsługi błędów
// w tym przypadku, wszystkie błędy PEAR wywołają ostrzeżenie PHP
PEAR::setErrorHandling(PEAR_ERROR_TRIGGER, E_USER_WARNING);
// pamiętaj, że nazwa pliku i numer linii będą dostępne w konstruktorze
// PEAR_Error w PEAR.php
PEAR::raiseError('test warning', MYCLASS_ERROR_CODE);
// ten błąd wymaga trybu i nadpisuje domyślną globalną obsługę błedu.
$e = PEAR::raiseError('return only', MYCLASS_ERROR_CODE, PEAR_ERROR_RETURN);
PEAR::setErrorHandling(PEAR_ERROR_PRINT, "Gronk error: %s<br />\n");
// wypisuje "Gronk error: test warning<br />\n"
PEAR::raiseError('test warning', MYCLASS_ERROR_CODE);
/**
* Fikcyjna klasa to zademonstrowania obsługi błędów
* @package myClass
*/
class myClass extends PEAR {
/**
* Demonstracja domyślnej lokalnej obsługi błędów
*/
function myClass()
{
// metoda callback
$this->setErrorHandling(PEAR_ERROR_CALLBACK, array(&$this, 'handleErr'));
// wypisuje "custom handler...is working"
PEAR::raiseError('custom handler', MYCLASS_ERROR_CODE);
// statyczna metoda callback
$this->setErrorHandling(PEAR_ERROR_CALLBACK,
array('myClass', 'handleErrStatic'));
PEAR::raiseError('custom handler', MYCLASS_ERROR_CODE);
// funkcja callback
$this->setErrorHandling(PEAR_ERROR_CALLBACK, 'standardCallback');
PEAR::raiseError('custom handler', MYCLASS_ERROR_CODE);
}
/**
* Callback ustawiany przez konstruktor
* @param PEAR_Error Obiekt błedu
*/
function handleErr($error)
{
$this->lastError = $error->getMessage();
print $error->getMessage() . "...is working\n";
}
/**
* Statyczny callback ustawiany w konstruktorze
*
* W PHP 5, $this nie jest ustawiane jeśli metoda jest zadeklarowana z
* trybem dostępu static. W PHP 4 jest ustawiany, ale nie na obiekt klasy
* myClass, więc nie używaj go!
* @param PEAR_Error Obiekt błedu
* @static
*/
function handleErrStatic($error)
{
print 'static ' . $error->getMessage() . "...is working\n";
}
}
/**
* @param PEAR_Error The error object
*/
function standardCallback($error)
{
print 'normal function callback: ' . $error->getMessage();
}
// To powoduje wyświetlenie trzech komunikatów za pomocą callbacków.
// "custom handler...is working"
// "static custom handler... is working"
// "normal function callback: custom handler"
$mine = new myClass;
PEAR::setErrorHandling(PEAR_ERROR_DIE);
// kończy działanie skryptu z komunikatem "oops"
PEAR::raiseError('oops', MYCLASS_ERROR_CODE);
?>