31define(
'PEAR_ERROR_RETURN',     1);
 
   32define(
'PEAR_ERROR_PRINT',      2);
 
   33define(
'PEAR_ERROR_TRIGGER',    4);
 
   34define(
'PEAR_ERROR_DIE',        8);
 
   35define(
'PEAR_ERROR_CALLBACK',  16);
 
   40define(
'PEAR_ERROR_EXCEPTION', 32);
 
   42define(
'PEAR_ZE2', (function_exists(
'version_compare') &&
 
   43                    version_compare(zend_version(), 
"2-dev", 
"ge")));
 
   45if (substr(PHP_OS, 0, 3) == 
'WIN') {
 
   46    define(
'OS_WINDOWS', 
true);
 
   47    define(
'OS_UNIX',    
false);
 
   48    define(
'PEAR_OS',    
'Windows');
 
   50    define(
'OS_WINDOWS', 
false);
 
   51    define(
'OS_UNIX',    
true);
 
   52    define(
'PEAR_OS',    
'Unix'); 
 
   56if (!defined(
'PATH_SEPARATOR')) {
 
   58        define(
'PATH_SEPARATOR', 
';');
 
   60        define(
'PATH_SEPARATOR', 
':');
 
   65$GLOBALS[
'_PEAR_default_error_options']  = E_USER_NOTICE;
 
   66$GLOBALS[
'_PEAR_destructor_object_list'] = array();
 
   68$GLOBALS[
'_PEAR_error_handler_stack']    = array();
 
   70@ini_set(
'track_errors', 
true);
 
  170    function PEAR($error_class = 
null)
 
  172        $classname = strtolower(get_class($this));
 
  174            print "PEAR constructor called, class=$classname\n";
 
  176        if ($error_class !== 
null) {
 
  177            $this->_error_class = $error_class;
 
  179        while ($classname && strcasecmp($classname, 
"pear")) {
 
  180            $destructor = 
"_$classname";
 
  181            if (method_exists($this, $destructor)) {
 
  182                global $_PEAR_destructor_object_list;
 
  183                $_PEAR_destructor_object_list[] = &$this;
 
  184                if (!isset(
$GLOBALS[
'_PEAR_SHUTDOWN_REGISTERED'])) {
 
  185                    register_shutdown_function(
"_PEAR_call_destructors");
 
  186                    $GLOBALS[
'_PEAR_SHUTDOWN_REGISTERED'] = 
true;
 
  190                $classname = get_parent_class($classname);
 
  211            printf(
"PEAR destructor called, class=%s\n", strtolower(get_class($this)));
 
  233        if (!isset($properties[$class])) {
 
  234            $properties[$class] = array();
 
  236        if (!array_key_exists($var, $properties[$class])) {
 
  237            $properties[$class][$var] = 
null;
 
  239        return $properties[$class][$var];
 
  258        if (!isset(
$GLOBALS[
'_PEAR_SHUTDOWN_REGISTERED'])) {
 
  259            register_shutdown_function(
"_PEAR_call_destructors");
 
  260            $GLOBALS[
'_PEAR_SHUTDOWN_REGISTERED'] = 
true;
 
  262        $GLOBALS[
'_PEAR_shutdown_funcs'][] = array($func, $args);
 
  281        if (is_a(
$data, 
'PEAR_Error')) {
 
  282            if (is_null(
$code)) {
 
  284            } elseif (is_string(
$code)) {
 
  337        if (isset($this) && is_a($this, 
'PEAR')) {
 
  341            $setmode     = &
$GLOBALS[
'_PEAR_default_error_mode'];
 
  342            $setoptions  = &
$GLOBALS[
'_PEAR_default_error_options'];
 
  362                    trigger_error(
"invalid error callback", E_USER_WARNING);
 
  367                trigger_error(
"invalid error mode", E_USER_WARNING);
 
  392        if (is_array(
$code)) {
 
  393            array_push($this->_expected_errors, 
$code);
 
  395            array_push($this->_expected_errors, array(
$code));
 
  411        return array_pop($this->_expected_errors);
 
  429        foreach ($this->_expected_errors AS $key => $error_array) {
 
  430            if (in_array($error_code, $error_array)) {
 
  431                unset($this->_expected_errors[$key][array_search($error_code, $error_array)]);
 
  436            if (0 == count($this->_expected_errors[$key])) {
 
  437                unset($this->_expected_errors[$key]);
 
  459        if ((is_array($error_code) && (0 != count($error_code)))) {
 
  463            foreach($error_code as $key => $error) {
 
  470            return $deleted ? true : 
PEAR::raiseError(
"The expected error you submitted does not exist"); 
 
  471        } elseif (!empty($error_code)) {
 
  533        if (is_object($message)) {
 
  534            $code        = $message->getCode();
 
  535            $userinfo    = $message->getUserInfo();
 
  536            $error_class = $message->getType();
 
  537            $message->error_message_prefix = 
'';
 
  538            $message     = $message->getMessage();
 
  541        if (isset($this) && isset($this->_expected_errors) && 
sizeof($this->_expected_errors) > 0 && 
sizeof($exp = end($this->_expected_errors))) {
 
  542            if ($exp[0] == 
"*" ||
 
  543                (is_int(reset($exp)) && in_array(
$code, $exp)) ||
 
  544                (is_string(reset($exp)) && in_array($message, $exp))) {
 
  549        if ($mode === 
null) {
 
  551            if (isset($this) && isset($this->_default_error_mode)) {
 
  555            } elseif (isset(
$GLOBALS[
'_PEAR_default_error_mode'])) {
 
  556                $mode    = 
$GLOBALS[
'_PEAR_default_error_mode'];
 
  561        if ($error_class !== 
null) {
 
  563        } elseif (isset($this) && isset($this->_error_class)) {
 
  568        if (intval(PHP_VERSION) < 5) {
 
  570            include 
'PEAR/FixPHP5PEARWarnings.php';
 
  595        if (isset($this) && is_a($this, 
'PEAR')) {
 
  607        $stack = &
$GLOBALS[
'_PEAR_error_handler_stack'];
 
  608        $def_mode    = &
$GLOBALS[
'_PEAR_default_error_mode'];
 
  609        $def_options = &
$GLOBALS[
'_PEAR_default_error_options'];
 
  610        $stack[] = array($def_mode, $def_options);
 
  628                    trigger_error(
"invalid error callback", E_USER_WARNING);
 
  633                trigger_error(
"invalid error mode", E_USER_WARNING);
 
  642        $stack = &
$GLOBALS[
'_PEAR_error_handler_stack'];
 
  643        $setmode     = &
$GLOBALS[
'_PEAR_default_error_mode'];
 
  644        $setoptions  = &
$GLOBALS[
'_PEAR_default_error_options'];
 
  646        list($mode, 
$options) = $stack[
sizeof($stack) - 1];
 
  665                    trigger_error(
"invalid error callback", E_USER_WARNING);
 
  670                trigger_error(
"invalid error mode", E_USER_WARNING);
 
  692        $stack = &
$GLOBALS[
'_PEAR_error_handler_stack'];
 
  693        if (isset($this) && is_a($this, 
'PEAR')) {
 
  697            $def_mode    = &
$GLOBALS[
'_PEAR_default_error_mode'];
 
  698            $def_options = &
$GLOBALS[
'_PEAR_default_error_options'];
 
  700        $stack[] = array($def_mode, $def_options);
 
  702        if (isset($this) && is_a($this, 
'PEAR')) {
 
  723        $stack = &
$GLOBALS[
'_PEAR_error_handler_stack'];
 
  725        list($mode, 
$options) = $stack[
sizeof($stack) - 1];
 
  727        if (isset($this) && is_a($this, 
'PEAR')) {
 
  747        if (!extension_loaded($ext)) {
 
  749            if ((ini_get(
'enable_dl') != 1) || (ini_get(
'safe_mode') == 1)) {
 
  754            } elseif (PHP_OS == 
'HP-UX') {
 
  756            } elseif (PHP_OS == 
'AIX') {
 
  758            } elseif (PHP_OS == 
'OSX') {
 
  763            return @dl(
'php_'.$ext.$suffix) || @dl($ext.$suffix);
 
  775    global $_PEAR_destructor_object_list;
 
  776    if (is_array($_PEAR_destructor_object_list) &&
 
  777        sizeof($_PEAR_destructor_object_list))
 
  779        reset($_PEAR_destructor_object_list);
 
  781            $_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list);
 
  783        while (list($k, $objref) = each($_PEAR_destructor_object_list)) {
 
  784            $classname = get_class($objref);
 
  786                $destructor = 
"_$classname";
 
  787                if (method_exists($objref, $destructor)) {
 
  788                    $objref->$destructor();
 
  791                    $classname = get_parent_class($classname);
 
  797        $_PEAR_destructor_object_list = array();
 
  801    if (is_array(
$GLOBALS[
'_PEAR_shutdown_funcs']) AND !empty(
$GLOBALS[
'_PEAR_shutdown_funcs'])) {
 
  802        foreach (
$GLOBALS[
'_PEAR_shutdown_funcs'] as $value) {
 
  803            call_user_func_array($value[0], $value[1]);
 
  864        if (
$mode === 
null) {
 
  872            $this->backtrace = debug_backtrace();
 
  873            if (isset($this->backtrace[0]) && isset($this->backtrace[0][
'object'])) {
 
  874                unset($this->backtrace[0][
'object']);
 
  878            $this->level = E_USER_NOTICE;
 
  885            $this->callback = 
null;
 
  896            trigger_error($this->
getMessage(), $this->level);
 
  902                if (substr($msg, -1) != 
"\n") {
 
  908            die(sprintf($format, $msg));
 
  911            if (is_callable($this->callback)) {
 
  912                call_user_func($this->callback, $this);
 
  916            trigger_error(
"PEAR_ERROR_EXCEPTION is obsolete, use class PEAR_Exception for exceptions", E_USER_WARNING);
 
  917            $e = 
new Exception($this->message, $this->code);
throw($e); 
 
  944        return $this->callback;
 
  959        return ($this->error_message_prefix . $this->message);
 
  988        return get_class($this);
 
 1032        if (defined(
'PEAR_IGNORE_BACKTRACE')) {
 
 1035        if ($frame === 
null) {
 
 1038        return $this->backtrace[$frame];
 
 1046        if (empty($this->userinfo)) {
 
 1047            $this->userinfo = 
$info;
 
 1049            $this->userinfo .= 
" ** $info";
 
 1070        $levels = array(E_USER_NOTICE  => 
'notice',
 
 1071                        E_USER_WARNING => 
'warning',
 
 1072                        E_USER_ERROR   => 
'error');
 
 1074            if (is_array($this->callback)) {
 
 1075                $callback = (is_object($this->callback[0]) ?
 
 1076                    strtolower(get_class($this->callback[0])) :
 
 1077                    $this->callback[0]) . 
'::' .
 
 1080                $callback = $this->callback;
 
 1082            return sprintf(
'[%s: message="%s" code=%d mode=callback '.
 
 1083                           'callback=%s prefix="%s" info="%s"]',
 
 1084                           strtolower(get_class($this)), $this->message, $this->code,
 
 1085                           $callback, $this->error_message_prefix,
 
 1092            $modes[] = 
'trigger';
 
 1098            $modes[] = 
'return';
 
 1100        return sprintf(
'[%s: message="%s" code=%d mode=%s level=%s '.
 
 1101                       'prefix="%s" info="%s"]',
 
 1102                       strtolower(get_class($this)), $this->message, $this->code,
 
 1103                       implode(
"|", $modes), $levels[$this->level],
 
 1104                       $this->error_message_prefix,
 
const PEAR_ERROR_RETURN
#+ ERROR constants
const PEAR_ERROR_EXCEPTION
WARNING: obsolete.
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
const PEAR_ERROR_CALLBACK
getMessage()
Get the error message from an error object.
PEAR_Error($message='unknown error', $code=null, $mode=null, $options=null, $userinfo=null)
PEAR_Error constructor.
getDebugInfo()
Get additional debug information supplied by the application.
getUserInfo()
Get additional user-supplied information.
getCode()
Get error code from an error object.
getBacktrace($frame=null)
Get the call backtrace from where the error was generated.
getCallback()
Get the callback function/method from an error object.
getType()
Get the name of this error/exception.
getMode()
Get the error mode from an error object.
toString()
Make a string representation of this object.
loadExtension($ext)
OS independant PHP extension load.
& throwError($message=null, $code=null, $userinfo=null)
Simpler form of raiseError with fewer options.
PEAR($error_class=null)
Constructor.
_PEAR()
Destructor (the emulated type of...).
popExpect()
This method pops one element off the expected error codes stack.
pushErrorHandling($mode, $options=null)
Push a new error handler on top of the error handler options stack.
staticPushErrorHandling($mode, $options=null)
_checkDelExpect($error_code)
This method checks unsets an error code if available.
delExpect($error_code)
This method deletes all occurences of the specified element from the expected error codes stack.
expectError($code=' *')
This method is used to tell which errors you expect to get.
registerShutdownFunc($func, $args=array())
Use this function to register a shutdown method for static classes.
isError($data, $code=null)
Tell whether a value is a PEAR error.
setErrorHandling($mode=null, $options=null)
Sets how errors generated by this object should be handled.
& getStaticProperty($class, $var)
If you have a class that's mostly/entirely static, and you need static properties,...
popErrorHandling()
Pop the last error handler used.
& raiseError($message=null, $code=null, $mode=null, $options=null, $userinfo=null, $error_class=null, $skipmsg=false)
This method is a wrapper that returns an instance of the configured error class with this object's de...
if(!is_array($argv)) $options