PEAR::setErrorHandling()

PEAR::setErrorHandling() – ustala obsługę błędów wygenerowanych przez pakiety PEAR

Synopsis

require_once 'PEAR.php';

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

Description

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).

Parameter

  • 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&lstrok;a specjalnie dla tego przyk&lstrok;adu
define('MYCLASS_ERROR_CODE'1);

// demonstracja globalnej obs&lstrok;ugi b&lstrok;&eogon;d&oacute;w
// w tym przypadku, wszystkie b&lstrok;&eogon;dy PEAR wywo&lstrok;aj&aogon; ostrze&zdot;enie PHP
PEAR::setErrorHandling(PEAR_ERROR_TRIGGERE_USER_WARNING);
// pami&eogon;taj, &zdot;e nazwa pliku i numer linii b&eogon;d&aogon; dost&eogon;pne w konstruktorze
// PEAR_Error w PEAR.php
PEAR::raiseError('test warning'MYCLASS_ERROR_CODE);

// ten b&lstrok;&aogon;d wymaga trybu i nadpisuje domy&sacute;ln&aogon; globaln&aogon; obs&lstrok;ug&eogon; b&lstrok;edu.
$e PEAR::raiseError('return only'MYCLASS_ERROR_CODEPEAR_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&lstrok;ugi b&lstrok;&eogon;d&oacute;w
 * @package myClass
 */
class myClass extends PEAR {
    
/**
     * Demonstracja domy&sacute;lnej lokalnej obs&lstrok;ugi b&lstrok;&eogon;d&oacute;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&lstrok;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&sacute;li metoda jest zadeklarowana z
     * trybem dost&eogon;pu static. W PHP 4 jest ustawiany, ale nie na obiekt klasy
     * myClass, wi&eogon;c nie u&zdot;ywaj go!
     * @param PEAR_Error Obiekt b&lstrok;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&sacute;wietlenie trzech komunikat&oacute;w za pomoc&aogon; callback&oacute;w.
// "custom handler...is working"
// "static custom handler... is working"
// "normal function callback: custom handler"
$mine = new myClass;

PEAR::setErrorHandling(PEAR_ERROR_DIE);
// ko&nacute;czy dzia&lstrok;anie skryptu z komunikatem "oops"
PEAR::raiseError('oops'MYCLASS_ERROR_CODE);
?>