]> granicus.if.org Git - php/commitdiff
raiseError() now can accepts a PEAR error object in its first argument. With
authorTomas V.V.Cox <cox@php.net>
Sun, 29 Jul 2001 04:25:33 +0000 (04:25 +0000)
committerTomas V.V.Cox <cox@php.net>
Sun, 29 Jul 2001 04:25:33 +0000 (04:25 +0000)
this, users can "re-throw" a previously created PEAR error object (very
useful after the use of (push|pop)ErrorHandling)

pear/PEAR.php

index 477f2d9c13df3691e3f6c3453dcc04231093bf5e..a98c04e60ff634bd61fcb3edf6b85a5476234b6d 100644 (file)
@@ -224,7 +224,7 @@ class PEAR
      * handling applied.  If the $mode and $options parameters are not
      * specified, the object's defaults are used.
      *
-     * @param $message  a text error message
+     * @param $message  a text error message or a PEAR error object
      * @param $code     a numeric error code (it is up to your class
      *                  to define these if you want to use codes)
      * @param $mode     One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT,
@@ -260,6 +260,14 @@ class PEAR
                          $error_class = null,
                          $skipmsg = false)
     {
+        // The error is yet a PEAR error object
+        if (is_object($message)) {
+            $code        = $message->getCode();
+            $userinfo    = $message->getUserInfo();
+            $error_class = $message->getType();
+            $message     = $message->getMessage();
+        }
+
         if ($mode === null) {
             if (isset($this) && isset($this->_default_error_mode)) {
                 $mode = $this->_default_error_mode;
@@ -453,7 +461,7 @@ class PEAR_Error
         $this->message   = $message;
         $this->code      = $code;
         $this->mode      = $mode;
-        $this->userinfo = $userinfo;
+        $this->userinfo  = $userinfo;
         if ($mode & PEAR_ERROR_CALLBACK) {
             $this->level = E_USER_NOTICE;
             $this->callback = $options;