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

📄 paterrormanager.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php/** * patErrorManager main error management class used by pat tools for the * application-internal error management. Creates patError objects for * any errors for precise error management. * *	$Id: patErrorManager.php 10871 2008-08-30 07:30:33Z willebil $ * * @package	patError *//** * error definition: illegal options. */define( 'PATERRORMANAGER_ERROR_ILLEGAL_OPTIONS', 1 );/** * error definition: callback function does not exist. */define( 'PATERRORMANAGER_ERROR_CALLBACK_NOT_CALLABLE', 2 );/** * error definition: illegal error handling mode. */define( 'PATERRORMANAGER_ERROR_ILLEGAL_MODE', 3 );/** * global definitions needed to keep track of things when calling the patErrorManager * static methods. */$GLOBALS['_pat_errorHandling']	=	array(											E_NOTICE	=> array( 'mode' => 'echo' ),											E_WARNING	=> array( 'mode' => 'echo' ),											E_ERROR		=> array( 'mode' => 'die' )										);/** * available error levels * Stored in a variable to keep them flexible */$GLOBALS['_pat_errorLevels']	=	array(											E_NOTICE	=> 'Notice',											E_WARNING	=> 'Warning',											E_ERROR		=> 'Error'										);/** * error class names * Stored in a variable allows to change during runtime */$GLOBALS['_pat_errorClass']	=	'patError';/** * ignore errors * Store error-codes that will be ignored forever */$GLOBALS['_pat_errorIgnores']	=	array();/** * expects errors * Store error-codes that will be ignored once */$GLOBALS['_pat_errorExpects']	=	array();/** * patErrorManager main error management class used by pat tools for the * application-internal error management. Creates patError objects for * any errors for precise error management. * * @static * @package	patError * @version	0.3 * @author	gERD Schaufelberger <gerd@php-tools.net> * @author	Stephan Schmidt <schst@php-tools.net> * @license	LGPL * @link	http://www.php-tools.net * @todo	implement ignoreError() to ignore errrors with a certain code * @todo	implement expectError() to ignore an error with a certain code only once. */class patErrorManager{	/**	* method for checking whether the return value of a pat application method is a pat	* error object.	*	* @static	* @access	public	* @param	mixed	&$object	* @return	boolean $result	True if argument is a patError-object, false otherwise.	*/    function isError( &$object )    {		if( !is_object( $object ) )		{			return false;		}		if( strtolower(get_class( $object )) != strtolower( $GLOBALS['_pat_errorClass'] ) && !is_subclass_of( $object, $GLOBALS['_pat_errorClass'] ) )		{			return false;		}        return  true;    }	/**	* wrapper for the {@link raise()} method where you do not have to specify the	* error level - a {@link patError} object with error level E_ERROR will be returned.	*	* @static	* @access	public	* @param	string	$code	The application-internal error code for this error	* @param	string	$msg	The error message, which may also be shown the user if need be.	* @param	mixed	$info	Optional: Additional error information (usually only developer-relevant information that the user should never see, like a database DSN).	* @return	object	$error	The configured patError object	* @see		raise()	* @see		patError	*/	function &raiseError( $code, $msg, $info = null )	{		return patErrorManager::raise( E_ERROR, $code, $msg, $info );	}	/**	* wrapper for the {@link raise()} method where you do not have to specify the	* error level - a {@link patError} object with error level E_WARNING will be returned.	*	* @static	* @access	public	* @param	string	$code	The application-internal error code for this error	* @param	string	$msg	The error message, which may also be shown the user if need be.	* @param	mixed	$info	Optional: Additional error information (usually only developer-relevant information that the user should never see, like a database DSN).	* @return	object	$error	The configured patError object	* @see		raise()	* @see		patError	*/	function &raiseWarning( $code, $msg, $info = null )	{		return patErrorManager::raise( E_WARNING, $code, $msg, $info );	}	/**	* wrapper for the {@link raise()} method where you do not have to specify the	* error level - a {@link patError} object with error level E_NOTICE will be returned.	*	* @static	* @access	public	* @param	string	$code	The application-internal error code for this error	* @param	string	$msg	The error message, which may also be shown the user if need be.	* @param	mixed	$info	Optional: Additional error information (usually only developer-relevant information that the user should never see, like a database DSN).	* @return	object	$error	The configured patError object	* @see		raise()	* @see		patError	*/	function &raiseNotice( $code, $msg, $info = null )	{		return patErrorManager::raise( E_NOTICE, $code, $msg, $info );	}	/**	* creates a new patError object given the specified information.	*	* @access	public	* @param	int		$level	The error level - use any of PHP's own error levels for this: E_ERROR, E_WARNING, E_NOTICE, E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE.	* @param	string	$code	The application-internal error code for this error	* @param	string	$msg	The error message, which may also be shown the user if need be.	* @param	mixed	$info	Optional: Additional error information (usually only developer-relevant information that the user should never see, like a database DSN).	* @return	mixed	$error	The configured patError object or false if this error should be ignored	* @see		patError	* @todo		implement 'simple' mode that returns just false (BC for patConfiguration)	* @todo		either remove HTML tags and entities from output or test for enviroment!!! <b></b> in shell is ugly!	*/    function &raise( $level, $code, $msg, $info = null )    {		// ignore this error?		if( in_array( $code, $GLOBALS['_pat_errorIgnores'] ) )		{			return false;		}		// this error was expected		if( !empty( $GLOBALS['_pat_errorExpects'] ) )		{			$expected =	array_pop( $GLOBALS['_pat_errorExpects'] );			if( in_array( $code, $expected ) )			{				return false;			}		}		// need patError		$class	=	$GLOBALS['_pat_errorClass'];		if( !class_exists( $class ) )		{			include_once dirname( __FILE__ ) . '/'. $class .'.php';		}		// build error object		$error			=&	new	$class( $level, $code, $msg, $info );		// see what to do with this kind of error		$handling	=	patErrorManager::getErrorHandling( $level );		$function	=	'handleError' . ucfirst( $handling['mode'] );		if (is_callable( array( 'patErrorManager', $function ) )) {			return patErrorManager::$function( $error, $handling );		} else {			// This is required to prevent a very unhelpful white-screen-of-death			jexit(				'JError::raise -> Static method JError::' . $function . ' does not exist.' .				' Contact a developer to debug' .				'<br /><strong>Error was</strong> ' .				'<br />' . $error->getMessage()			);		}    }	/**	* register a new error level	*	* This allows you to add custom error levels to the built-in	* - E_NOTICE	* - E_WARNING	* - E_NOTICE	*	* You may use this level in subsequent calls to raise().	* Error handling will be set to 'ignore' for the new level, you	* may change it by using setErrorHandling().	*	* You could be using PHP's predefined constants for error levels	* or any other integer value.	*	* @access	public	* @param	integer	error level	* @param	string	human-readable name	* @return	boolean	true on success; false if the level already has been registered	* @see		raise(), setErrorHandling()	* @link		http://www.php.net/manual/en/function.error-reporting.php	*/	function registerErrorLevel( $level, $name )	{		if( isset( $GLOBALS['_pat_errorLevels'][$level] ) )		{			return false;		}		$GLOBALS['_pat_errorLevels'][$level]	=	$name;		patErrorManager::setErrorHandling( $level, 'ignore' );		return	true;	}	/**	* sets the way the patErrorManager will handle teh different error levels. Use this	* if you want to override the default settings.	*	* Error handling modes:	* - ignore	* - trigger	* - verbose	* - echo	* - callback	* - die	*	* You may also set the error handling for several modes at once using PHP's bit operations.	* Examples:	* - E_ALL = Set the handling for all levels	* - E_ERROR | E_WARNING = Set the handling for errors and warnings	* - E_ALL ^ E_ERROR = Set the handling for all levels except errors	*	* @static	* @access	public	* @param	int		$level		The error level for which to set the error handling	* @param	string	$mode		The mode to use for the error handling.	* @param	mixed	$options	Optional: Any options needed for the given mode.	* @return	mixed	$result		True on success, or a patError object if failed.	* @see		getErrorHandling()	*/    function setErrorHandling( $level, $mode, $options = null )    {		$levels	=	$GLOBALS['_pat_errorLevels'];		$function	=	'handleError' . ucfirst( $mode );		if( !is_callable( array( 'patErrorManager', $function ) ) )		{			return patErrorManager::raiseError( E_ERROR,												'patErrorManager:' . PATERRORMANAGER_ERROR_ILLEGAL_MODE,												'Error Handling mode is not knwon',												'Mode: ' .  $mode . ' is not implemented.'												);		}		foreach( $levels as $eLevel => $eTitle )		{			if( ( $level & $eLevel ) != $eLevel )			{				continue;			}			// set callback options			if( $mode == 'callback' )			{				if( !is_array( $options ) )				{					return patErrorManager::raiseError( E_ERROR,														'patErrorManager:' . PATERRORMANAGER_ERROR_ILLEGAL_OPTIONS,														'Options for callback not valid'														);				}				if( !is_callable( $options ) )				{					$tmp	=	array( 'GLOBAL' );					if( is_array( $options ) )					{						$tmp[0]	=	$options[0];						$tmp[1]	=	$options[1];					}					else					{						$tmp[1]	=	$options;					}					return patErrorManager::raiseError(	E_ERROR,														'patErrorManager:' . PATERRORMANAGER_ERROR_CALLBACK_NOT_CALLABLE,														'Function is not callable',														'Function:' . $tmp[1]  . ' scope ' . $tmp[0] . '.'														);				}			}			// save settings			$GLOBALS['_pat_errorHandling'][$eLevel]	=	array( 'mode' => $mode );			if( $options	!= null )			{				$GLOBALS['_pat_errorHandling'][$eLevel]['options']	=	$options;			}		}        return  true;    }	/**	* retrieves the current error handling settings for the specified error level.	*	* @access	public	* @param	int		$level		The error level to retrieve. This can be any of PHP's own error levels, e.g. E_ALL, E_NOTICE...	* @return	array	$handling	All error handling details	*/    function getErrorHandling( $level )    {		return $GLOBALS['_pat_errorHandling'][$level];    }

⌨️ 快捷键说明

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