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

📄 pear.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
📖 第 1 页 / 共 3 页
字号:
<?php/** * PEAR, the PHP Extension and Application Repository * * PEAR class and PEAR_Error class * * PHP versions 4 and 5 * * LICENSE: This source file is subject to version 3.0 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_0.txt.  If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @category   pear * @package    PEAR * @author     Sterling Hughes <sterling@php.net> * @author     Stig Bakken <ssb@php.net> * @author     Tomas V.V.Cox <cox@idecnet.com> * @author     Greg Beaver <cellog@php.net> * @copyright  1997-2006 The PHP Group * @license    http://www.php.net/license/3_0.txt  PHP License 3.0 * @version    CVS: $Id: PEAR.php 10381 2008-06-01 03:35:53Z pasamio $ * @link       http://pear.php.net/package/PEAR * @since      File available since Release 0.1 *//**#@+ * ERROR constants */define('PEAR_ERROR_RETURN',     1);define('PEAR_ERROR_PRINT',      2);define('PEAR_ERROR_TRIGGER',    4);define('PEAR_ERROR_DIE',        8);define('PEAR_ERROR_CALLBACK',  16);/** * WARNING: obsolete * @deprecated */define('PEAR_ERROR_EXCEPTION', 32);/**#@-*/define('PEAR_ZE2', (function_exists('version_compare') &&                    version_compare(zend_version(), "2-dev", "ge")));if (substr(PHP_OS, 0, 3) == 'WIN') {    define('OS_WINDOWS', true);    define('OS_UNIX',    false);    define('PEAR_OS',    'Windows');} else {    define('OS_WINDOWS', false);    define('OS_UNIX',    true);    define('PEAR_OS',    'Unix'); // blatant assumption}// instant backwards compatibilityif (!defined('PATH_SEPARATOR')) {    if (OS_WINDOWS) {        define('PATH_SEPARATOR', ';');    } else {        define('PATH_SEPARATOR', ':');    }}$GLOBALS['_PEAR_default_error_mode']     = PEAR_ERROR_RETURN;$GLOBALS['_PEAR_default_error_options']  = E_USER_NOTICE;$GLOBALS['_PEAR_destructor_object_list'] = array();$GLOBALS['_PEAR_shutdown_funcs']         = array();$GLOBALS['_PEAR_error_handler_stack']    = array();@ini_set('track_errors', true);/** * Base class for other PEAR classes.  Provides rudimentary * emulation of destructors. * * If you want a destructor in your class, inherit PEAR and make a * destructor method called _yourclassname (same name as the * constructor, but with a "_" prefix).  Also, in your constructor you * have to call the PEAR constructor: $this->PEAR();. * The destructor method will be called without parameters.  Note that * at in some SAPI implementations (such as Apache), any output during * the request shutdown (in which destructors are called) seems to be * discarded.  If you need to get any debug information from your * destructor, use error_log(), syslog() or something similar. * * IMPORTANT! To use the emulated destructors you need to create the * objects by reference: $obj =& new PEAR_child; * * @category   pear * @package    PEAR * @author     Stig Bakken <ssb@php.net> * @author     Tomas V.V. Cox <cox@idecnet.com> * @author     Greg Beaver <cellog@php.net> * @copyright  1997-2006 The PHP Group * @license    http://www.php.net/license/3_0.txt  PHP License 3.0 * @version    Release: 1.4.10 * @link       http://pear.php.net/package/PEAR * @see        PEAR_Error * @since      Class available since PHP 4.0.2 * @link        http://pear.php.net/manual/en/core.pear.php#core.pear.pear */class PEAR{    // {{{ properties    /**     * Whether to enable internal debug messages.     *     * @var     bool     * @access  private     */    var $_debug = false;    /**     * Default error mode for this object.     *     * @var     int     * @access  private     */    var $_default_error_mode = null;    /**     * Default error options used for this object when error mode     * is PEAR_ERROR_TRIGGER.     *     * @var     int     * @access  private     */    var $_default_error_options = null;    /**     * Default error handler (callback) for this object, if error mode is     * PEAR_ERROR_CALLBACK.     *     * @var     string     * @access  private     */    var $_default_error_handler = '';    /**     * Which class to use for error objects.     *     * @var     string     * @access  private     */    var $_error_class = 'PEAR_Error';    /**     * An array of expected errors.     *     * @var     array     * @access  private     */    var $_expected_errors = array();    // }}}    // {{{ constructor    /**     * Constructor.  Registers this object in     * $_PEAR_destructor_object_list for destructor emulation if a     * destructor object exists.     *     * @param string $error_class  (optional) which class to use for     *        error objects, defaults to PEAR_Error.     * @access public     * @return void     */    function PEAR($error_class = null)    {        $classname = strtolower(get_class($this));        if ($this->_debug) {            print "PEAR constructor called, class=$classname\n";        }        if ($error_class !== null) {            $this->_error_class = $error_class;        }        while ($classname && strcasecmp($classname, "pear")) {            $destructor = "_$classname";            if (method_exists($this, $destructor)) {                global $_PEAR_destructor_object_list;                $_PEAR_destructor_object_list[] = &$this;                if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) {                    register_shutdown_function("_PEAR_call_destructors");                    $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true;                }                break;            } else {                $classname = get_parent_class($classname);            }        }    }    // }}}    // {{{ destructor    /**     * Destructor (the emulated type of...).  Does nothing right now,     * but is included for forward compatibility, so subclass     * destructors should always call it.     *     * See the note in the class desciption about output from     * destructors.     *     * @access public     * @return void     */    function _PEAR() {        if ($this->_debug) {            printf("PEAR destructor called, class=%s\n", strtolower(get_class($this)));        }    }    // }}}    // {{{ getStaticProperty()    /**    * If you have a class that's mostly/entirely static, and you need static    * properties, you can use this method to simulate them. Eg. in your method(s)    * do this: $myVar = &PEAR::getStaticProperty('myclass', 'myVar');    * You MUST use a reference, or they will not persist!    *    * @access public    * @param  string $class  The calling classname, to prevent clashes    * @param  string $var    The variable to retrieve.    * @return mixed   A reference to the variable. If not set it will be    *                 auto initialised to NULL.    */    function &getStaticProperty($class, $var)    {        static $properties;        return $properties[$class][$var];    }    // }}}    // {{{ registerShutdownFunc()    /**    * Use this function to register a shutdown method for static    * classes.    *    * @access public    * @param  mixed $func  The function name (or array of class/method) to call    * @param  mixed $args  The arguments to pass to the function    * @return void    */    function registerShutdownFunc($func, $args = array())    {        // if we are called statically, there is a potential        // that no shutdown func is registered.  Bug #6445        if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) {            register_shutdown_function("_PEAR_call_destructors");            $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true;        }        $GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args);    }    // }}}    // {{{ isError()    /**     * Tell whether a value is a PEAR error.     *     * @param   mixed $data   the value to test     * @param   int   $code   if $data is an error object, return true     *                        only if $code is a string and     *                        $obj->getMessage() == $code or     *                        $code is an integer and $obj->getCode() == $code     * @access  public     * @return  bool    true if parameter is an error     */    function isError($data, $code = null)    {        if (is_a($data, 'PEAR_Error')) {            if (is_null($code)) {                return true;            } elseif (is_string($code)) {                return $data->getMessage() == $code;            } else {                return $data->getCode() == $code;            }        }        return false;    }    // }}}    // {{{ setErrorHandling()    /**     * Sets how errors generated by this object should be handled.     * Can be invoked both in objects and statically.  If called     * statically, setErrorHandling sets the default behaviour for all     * PEAR objects.  If called in an object, setErrorHandling sets     * the default behaviour for that object.     *     * @param int $mode     *        One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT,     *        PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE,     *        PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION.     *     * @param mixed $options     *        When $mode is PEAR_ERROR_TRIGGER, this is the error level (one     *        of E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR).     *     *        When $mode is PEAR_ERROR_CALLBACK, this parameter is expected     *        to be the callback function or method.  A callback     *        function is a string with the name of the function, a     *        callback method is an array of two elements: the element     *        at index 0 is the object, and the element at index 1 is     *        the name of the method to call in the object.     *     *        When $mode is PEAR_ERROR_PRINT or PEAR_ERROR_DIE, this is     *        a printf format string used when printing the error     *        message.     *     * @access public     * @return void     * @see PEAR_ERROR_RETURN     * @see PEAR_ERROR_PRINT     * @see PEAR_ERROR_TRIGGER     * @see PEAR_ERROR_DIE     * @see PEAR_ERROR_CALLBACK     * @see PEAR_ERROR_EXCEPTION     *     * @since PHP 4.0.5     */    function setErrorHandling($mode = null, $options = null)    {        if (isset($this) && is_a($this, 'PEAR')) {            $setmode     = &$this->_default_error_mode;            $setoptions  = &$this->_default_error_options;        } else {            $setmode     = &$GLOBALS['_PEAR_default_error_mode'];            $setoptions  = &$GLOBALS['_PEAR_default_error_options'];        }        switch ($mode) {            case PEAR_ERROR_EXCEPTION:            case PEAR_ERROR_RETURN:            case PEAR_ERROR_PRINT:            case PEAR_ERROR_TRIGGER:            case PEAR_ERROR_DIE:            case null:                $setmode = $mode;                $setoptions = $options;                break;            case PEAR_ERROR_CALLBACK:                $setmode = $mode;                // class/object method callback                if (is_callable($options)) {                    $setoptions = $options;                } else {                    trigger_error("invalid error callback", E_USER_WARNING);                }                break;            default:                trigger_error("invalid error mode", E_USER_WARNING);                break;        }    }    // }}}    // {{{ expectError()

⌨️ 快捷键说明

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