Source for file myException.php
Documentation is available at myException.php
* @author JoungKyun.Kim <http://oops.org>
* @copyright (c) 2018, OOPS.org
* @link http://pear.oops.org/package/myException
* defeine PHP FATAL error type
E_ERROR | E_USER_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_RECOVERABLE_ERROR
* @author JoungKyun.Kim <http://oops.org>
* @copyright (c) 2018, OOPS.org
* @link http://pear.oops.org/package/myException
* @example myException/tests/myexp.php
* PHP 버전이 5.3 이전 버전 마크. 5.3.0 이전 버전일 경우 true.
private $early53 = false;
// {{{ (void) myException::__construct ($message, $code, Exception $prev= null)
public function __construct($message, $code = 0, Exception $prev = null) {
parent::__construct($message, $code, $prev);
parent::__construct($message, $code);
// {{{ (Exception) myException::Previous (void)
* __construct method의 3번째 인자값인 previous exception을 반환
* @return Exception prevous exception
return $this->early53 ? $this->prev : $this->getPrevious ();
// {{{ (array) myException::Trace (void)
* @return array Exception 스택을 배열로 반환
if ( $r instanceof Exception )
return $this->getTrace ();
// {{{ (array) myException::Message (void)
* Exception 에러 메시지를 PHP 에러 메시지 형식으로 반환
if ( $r instanceof Exception )
self::errStr ($e->getCode ()),
// {{{ (string) myException::TraceAsString (void)
* Exception 스택 trace를 문자열로 반환
if ( $r instanceof Exception )
return $r->getTraceAsString ();
return $this->getTraceAsString ();
// {{{ (array) myException::TraceAsArray (void)
* Exception 스택 trace를 배열로 반환
if ( $r instanceof Exception )
$str = $r->getTraceAsString ();
$str = $this->getTraceAsString ();
for ( $i= $no, $j= 0; $i>- 1; $i-- ,$j++ ) {
// {{{ (string) myException::errStr ($errno)
* @param int php error constants
static function errStr ($errno) {
return 'E_COMPILE_ERROR';
return 'E_COMPILE_WARNING';
case 4096 : // since php 5.2
return 'E_RECOVERABLE_ERROR';
case 8192 : // since php 5.3
case 16384 : // since php 5.3
return 'E_USER_DEPRECATED';
// {{{ (void) myException::finalize (void)
* E_ERROR 또는 E_USER_ERROR 시에 php를 중지 시킨다.
if ( $r instanceof Exception )
if ( $e->getCode () === E_ERROR || $e->getCode () === E_USER_ERROR )
// {{{ (void) myErrorHandler ($errno, $errstr, $errfile, $errline)
* myException을 사용하기 위한 error handler.
* 이 method는 static으로 선언이 되어 있으므로,
* myException::myErrorHandler() 과 같이 호출해야 한다.
* @param string 에러가 발생한 파일 경로
static function myErrorHandler ($errno, $errstr, $errfile, $errline) {
// {{{ (void) myShutdownHandler ($func = false) {
* Fatal error 처리를 위한 shutdown handler
* 이 method는 static으로 선언이 되어 있으므로,
* myException::myShutdownHandler() 와 같이 호출해야 한다.
* @param string (optional) callback function
$error->type = self::errStr ($error->type);
printf ('%s: %s' . PHP_EOL, $error->type, $error->message);
printf (' [file] => %s' . PHP_EOL, $error->file);
printf (' [line] => %s' . PHP_EOL, $error->line);
* vim: set filetype=php noet sw=4 ts=4 fdm=marker:
* vim600: noet sw=4 ts=4 fdm=marker
* vim<600: noet sw=4 ts=4
|