<?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.