zoukankan      html  css  js  c++  java
  • 使用命名空间:后备全局函数/常量 ¶

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

  • 相关阅读:
    项目在入口加一个简单的密码验证
    关于APICloud使用心得(原创)
    vue、React Nactive的区别(转载)
    js的Element.scrollIntoView的学习
    立个flag---每天一篇博客
    ACID理解
    CAP原理与最终一致性 强一致性 弱一致性
    事物隔离级别
    分布式事务
    MySQL日志
  • 原文地址:https://www.cnblogs.com/hnbiao/p/7217669.html
Copyright © 2011-2022 走看看