⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 errorstack.php

📁 This is the script which used on 10minutemail.com for temporary email.
💻 PHP
📖 第 1 页 / 共 3 页
字号:
<?php/** * Error Stack Implementation *  * This is an incredibly simple implementation of a very complex error handling * facility.  It contains the ability * to track multiple errors from multiple packages simultaneously.  In addition, * it can track errors of many levels, save data along with the error, context * information such as the exact file, line number, class and function that * generated the error, and if necessary, it can raise a traditional PEAR_Error. * It has built-in support for PEAR::Log, to log errors as they occur *  * Since version 0.2alpha, it is also possible to selectively ignore errors, * through the use of an error callback, see {@link pushCallback()} *  * Since version 0.3alpha, it is possible to specify the exception class * returned from {@link push()} * * Since version PEAR1.3.2, ErrorStack no longer instantiates an exception class.  This can * still be done quite handily in an error callback or by manipulating the returned array * @category   Debugging * @package    PEAR_ErrorStack * @author     Greg Beaver <cellog@php.net> * @copyright  2004-2008 Greg Beaver * @license    http://www.php.net/license/3_0.txt  PHP License 3.0 * @version    CVS: $Id: ErrorStack.php,v 1.28 2008/01/03 20:26:35 cellog Exp $ * @link       http://pear.php.net/package/PEAR_ErrorStack *//** * Singleton storage *  * Format: * <pre> * array( *  'package1' => PEAR_ErrorStack object, *  'package2' => PEAR_ErrorStack object, *  ... * ) * </pre> * @access private * @global array $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'] */$GLOBALS['_PEAR_ERRORSTACK_SINGLETON'] = array();/** * Global error callback (default) *  * This is only used if set to non-false.  * is the default callback for * all packages, whereas specific packages may set a default callback * for all instances, regardless of whether they are a singleton or not. * * To exclude non-singletons, only set the local callback for the singleton * @see PEAR_ErrorStack::setDefaultCallback() * @access private * @global array $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_CALLBACK'] */$GLOBALS['_PEAR_ERRORSTACK_DEFAULT_CALLBACK'] = array(    '*' => false,);/** * Global Log object (default) *  * This is only used if set to non-false.  Use to set a default log object for * all stacks, regardless of instantiation order or location * @see PEAR_ErrorStack::setDefaultLogger() * @access private * @global array $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] */$GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] = false;/** * Global Overriding Callback *  * This callback will override any error callbacks that specific loggers have set. * Use with EXTREME caution * @see PEAR_ErrorStack::staticPushCallback() * @access private * @global array $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] */$GLOBALS['_PEAR_ERRORSTACK_OVERRIDE_CALLBACK'] = array();/**#@+ * One of four possible return values from the error Callback * @see PEAR_ErrorStack::_errorCallback() *//** * If this is returned, then the error will be both pushed onto the stack * and logged. */define('PEAR_ERRORSTACK_PUSHANDLOG', 1);/** * If this is returned, then the error will only be pushed onto the stack, * and not logged. */define('PEAR_ERRORSTACK_PUSH', 2);/** * If this is returned, then the error will only be logged, but not pushed * onto the error stack. */define('PEAR_ERRORSTACK_LOG', 3);/** * If this is returned, then the error is completely ignored. */define('PEAR_ERRORSTACK_IGNORE', 4);/** * If this is returned, then the error is logged and die() is called. */define('PEAR_ERRORSTACK_DIE', 5);/**#@-*//** * Error code for an attempt to instantiate a non-class as a PEAR_ErrorStack in * the singleton method. */define('PEAR_ERRORSTACK_ERR_NONCLASS', 1);/** * Error code for an attempt to pass an object into {@link PEAR_ErrorStack::getMessage()} * that has no __toString() method */define('PEAR_ERRORSTACK_ERR_OBJTOSTRING', 2);/** * Error Stack Implementation * * Usage: * <code> * // global error stack * $global_stack = &PEAR_ErrorStack::singleton('MyPackage'); * // local error stack * $local_stack = new PEAR_ErrorStack('MyPackage'); * </code> * @author     Greg Beaver <cellog@php.net> * @version    1.7.0RC2 * @package    PEAR_ErrorStack * @category   Debugging * @copyright  2004-2008 Greg Beaver * @license    http://www.php.net/license/3_0.txt  PHP License 3.0 * @version    CVS: $Id: ErrorStack.php,v 1.28 2008/01/03 20:26:35 cellog Exp $ * @link       http://pear.php.net/package/PEAR_ErrorStack */class PEAR_ErrorStack {    /**     * Errors are stored in the order that they are pushed on the stack.     * @since 0.4alpha Errors are no longer organized by error level.     * This renders pop() nearly unusable, and levels could be more easily     * handled in a callback anyway     * @var array     * @access private     */    var $_errors = array();    /**     * Storage of errors by level.     *     * Allows easy retrieval and deletion of only errors from a particular level     * @since PEAR 1.4.0dev     * @var array     * @access private     */    var $_errorsByLevel = array();    /**     * Package name this error stack represents     * @var string     * @access protected     */    var $_package;        /**     * Determines whether a PEAR_Error is thrown upon every error addition     * @var boolean     * @access private     */    var $_compat = false;        /**     * If set to a valid callback, this will be used to generate the error     * message from the error code, otherwise the message passed in will be     * used     * @var false|string|array     * @access private     */    var $_msgCallback = false;        /**     * If set to a valid callback, this will be used to generate the error     * context for an error.  For PHP-related errors, this will be a file     * and line number as retrieved from debug_backtrace(), but can be     * customized for other purposes.  The error might actually be in a separate     * configuration file, or in a database query.     * @var false|string|array     * @access protected     */    var $_contextCallback = false;        /**     * If set to a valid callback, this will be called every time an error     * is pushed onto the stack.  The return value will be used to determine     * whether to allow an error to be pushed or logged.     *      * The return value must be one an PEAR_ERRORSTACK_* constant     * @see PEAR_ERRORSTACK_PUSHANDLOG, PEAR_ERRORSTACK_PUSH, PEAR_ERRORSTACK_LOG     * @var false|string|array     * @access protected     */    var $_errorCallback = array();        /**     * PEAR::Log object for logging errors     * @var false|Log     * @access protected     */    var $_logger = false;        /**     * Error messages - designed to be overridden     * @var array     * @abstract     */    var $_errorMsgs = array();        /**     * Set up a new error stack     *      * @param string   $package name of the package this error stack represents     * @param callback $msgCallback callback used for error message generation     * @param callback $contextCallback callback used for context generation,     *                 defaults to {@link getFileLine()}     * @param boolean  $throwPEAR_Error     */    function PEAR_ErrorStack($package, $msgCallback = false, $contextCallback = false,                         $throwPEAR_Error = false)    {        $this->_package = $package;        $this->setMessageCallback($msgCallback);        $this->setContextCallback($contextCallback);        $this->_compat = $throwPEAR_Error;    }        /**     * Return a single error stack for this package.     *      * Note that all parameters are ignored if the stack for package $package     * has already been instantiated     * @param string   $package name of the package this error stack represents     * @param callback $msgCallback callback used for error message generation     * @param callback $contextCallback callback used for context generation,     *                 defaults to {@link getFileLine()}     * @param boolean  $throwPEAR_Error     * @param string   $stackClass class to instantiate     * @static     * @return PEAR_ErrorStack     */    function &singleton($package, $msgCallback = false, $contextCallback = false,                         $throwPEAR_Error = false, $stackClass = 'PEAR_ErrorStack')    {        if (isset($GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package])) {            return $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package];        }        if (!class_exists($stackClass)) {            if (function_exists('debug_backtrace')) {                $trace = debug_backtrace();            }            PEAR_ErrorStack::staticPush('PEAR_ErrorStack', PEAR_ERRORSTACK_ERR_NONCLASS,                'exception', array('stackclass' => $stackClass),                'stack class "%stackclass%" is not a valid class name (should be like PEAR_ErrorStack)',                false, $trace);        }        $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package] =            new $stackClass($package, $msgCallback, $contextCallback, $throwPEAR_Error);        return $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package];    }    /**     * Internal error handler for PEAR_ErrorStack class     *      * Dies if the error is an exception (and would have died anyway)     * @access private     */    function _handleError($err)    {        if ($err['level'] == 'exception') {            $message = $err['message'];            if (isset($_SERVER['REQUEST_URI'])) {                echo '<br />';            } else {                echo "\n";            }            var_dump($err['context']);            die($message);        }    }        /**     * Set up a PEAR::Log object for all error stacks that don't have one     * @param Log $log      * @static     */    function setDefaultLogger(&$log)    {        if (is_object($log) && method_exists($log, 'log') ) {            $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] = &$log;        } elseif (is_callable($log)) {            $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] = &$log;	}    }        /**     * Set up a PEAR::Log object for this error stack     * @param Log $log      */    function setLogger(&$log)    {        if (is_object($log) && method_exists($log, 'log') ) {            $this->_logger = &$log;        } elseif (is_callable($log)) {            $this->_logger = &$log;        }    }        /**     * Set an error code => error message mapping callback     *      * This method sets the callback that can be used to generate error     * messages for any instance     * @param array|string Callback function/method

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -