• 使用命名空间:后备全局函数/常量 ¶


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

  • 相关阅读:
    django的F和Q对象
    django的聚合函数和aggregate、annotate方法使用
    【C语言】linux C写入本地文件
    【C语言】Linux C调用系统命令
    【深度学习】ubuntu16.04下安装opencv3.4.0
    【深度学习】分析识别视频中的物体
    【Prometheus】第三篇:配置alertmamager
    【Prometheus】第二篇---基本查询语法
    【prometheus】学习第一篇——prometheus
    【windows】远程桌面报错:由于CredSSP加密Oracle修正
  • 原文地址:https://www.cnblogs.com/hnbiao/p/7217669.html
Copyright © 2020-2023  润新知