<?php
namespace alonephpase;
/**
*自定义错误类
*主要为了接管php默认的错误
*/
class Error
{
//设置用户自定义的错误处理函数
public function set_error(){
return set_error_handler(array($this,'my_error'));
}
//自定义错误
public function my_error($errno,$errstr,$errfile,$errline,$errcontext){
switch ($errno) {
case E_USER_ERROR:
echo "这是个致命错误:[$errno] $errstr<br/>
";
echo "错误行:$errline<br/>
";
echo "错误文件为:$errfile<br/>
";
echo "PHP版本号: " . PHP_VERSION . " (" . PHP_OS . ")<br />
";
exit(1);
break;
case E_USER_WARNING:
echo "这是个警告错误:[$errno] $errstr<br/>
";
echo "错误行:$errline<br/>
";
echo "错误文件为:$errfile<br/>
";
echo "PHP版本号 " . PHP_VERSION . " (" . PHP_OS . ")<br />
";
exit(1);
break;
case E_USER_NOTICE:
echo "这是个notice错误:[$errno] $errstr<br/>
";
echo "错误行为:$errline<br/>
";
echo "错误文件为:$errfile<br/>
";
echo "PHP版本号 " . PHP_VERSION . " (" . PHP_OS . ")<br />
";
exit(1);
break;
case E_NOTICE:
echo "这是个notice错误:[$errno] $errstr<br/>
";
echo "错误行:$errline<br/>
";
echo "错误文件为:$errfile<br/>
";
echo "PHP版本号: " . PHP_VERSION . " (" . PHP_OS . ")<br />
";
exit(1);
break;
default:
echo "Unknown error type: [$errno] $errstr<br />
";
break;
}
}
}
//异常类
class Myexception extends Exception{
//设置用户自定义的异常处理函数
public function set_exception(){
return set_exception_handler(array($this,'my_exception'));
}
public function my_exception($exception){
echo "未捕获的异常: " , $exception->getMessage(), "
";
}
}
$Error=new Error();
$Error->set_error();
$exc=new Myexception();
$exc->set_exception();
throw new Myexception('变量没有定义');
echo "Not Executed
";
// print_r($test);
// trigger_error("error",)
另外:官方是这样解释的
使用命名空间:后备全局函数/常量 ¶
(PHP 5 >= 5.3.0, PHP 7)
在一个命名空间中,当 PHP 遇到一个非限定的类、函数或常量名称时,它使用不同的优先策略来解析该名称。类名称总是解析到当前命名空间中的名称。因此在访问系统内部或不包含在命名空间中的类名称时,必须使用完全限定名称,例如:
Example #1 在命名空间中访问全局类
<?php
namespace ABC;
class Exception extends Exception {}
$a = new Exception('hi'); // $a 是类 ABCException 的一个对象
$b = new Exception('hi'); // $b 是类 Exception 的一个对象
$c = new ArrayObject; // 致命错误, 找不到 ABCArrayObject 类
?>
对于函数和常量来说,如果当前命名空间中不存在该函数或常量,PHP 会退而使用全局空间中的函数或常量。 For functions and constants, PHP will fall back to global functions or constants if a namespaced function or constant does not exist.