使用命名空间:后备全局函数/常量 ¶
2017-07-21 14:55
351 查看
<?php namespace alonephp\base; /** *自定义错误类 *主要为了接管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/>\n"; echo "错误行:$errline<br/>\n"; echo "错误文件为:$errfile<br/>\n"; echo "PHP版本号: " . PHP_VERSION . " (" . PHP_OS . ")<br />\n"; exit(1); break; case E_USER_WARNING: echo "这是个警告错误:[$errno] $errstr<br/>\n"; echo "错误行:$errline<br/>\n"; echo "错误文件为:$errfile<br/>\n"; echo "PHP版本号 " . PHP_VERSION . " (" . PHP_OS . ")<br />\n"; exit(1); break; case E_USER_NOTICE: echo "这是个notice错误:[$errno] $errstr<br/>\n"; echo "错误行为:$errline<br/>\n"; echo "错误文件为:$errfile<br/>\n"; echo "PHP版本号 " . PHP_VERSION . " (" . PHP_OS . ")<br />\n"; exit(1); break; case E_NOTICE: echo "这是个notice错误:[$errno] $errstr<br/>\n"; echo "错误行:$errline<br/>\n"; echo "错误文件为:$errfile<br/>\n"; echo "PHP版本号: " . PHP_VERSION . " (" . PHP_OS . ")<br />\n"; exit(1); break; default: echo "Unknown error type: [$errno] $errstr<br />\n"; 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(), "\n"; } } $Error=new Error(); $Error->set_error(); $exc=new Myexception(); $exc->set_exception(); throw new Myexception('变量没有定义'); echo "Not Executed\n"; // print_r($test); // trigger_error("error",) 另外:官方是这样解释的
使用命名空间:后备全局函数/常量 ¶
(PHP 5 >= 5.3.0, PHP 7)在一个命名空间中,当 PHP 遇到一个非限定的类、函数或常量名称时,它使用不同的优先策略来解析该名称。类名称总是解析到当前命名空间中的名称。因此在访问系统内部或不包含在命名空间中的类名称时,必须使用完全限定名称,例如:
Example #1 在命名空间中访问全局类
<?php namespace A\B\C; class Exception extends \Exception {} $a = new Exception('hi'); // $a 是类 A\B\C\Exception 的一个对象 $b = new \Exception('hi'); // $b 是类 Exception 的一个对象 $c = new ArrayObject; // 致命错误, 找不到 A\B\C\ArrayObject 类 ?>
对于函数和常量来说,如果当前命名空间中不存在该函数或常量,PHP
会退而使用全局空间中的函数或常量。
For functions and constants, PHP will fall back to global functions or constants
if a namespaced function or constant does not exist.
相关文章推荐
- PHP基础之命名空间8——后备全局函数/常量
- 命名空间和全局函数的使用一例
- X3全局变量及公共函数所在的命名空间说明
- PHP常量声明、使用方法|define()函数定义常量类似于全局
- PHP5.6对命名空间的扩展,use可以导入函数与常量空间
- ASP.NET AJAX 说明文档->客户端引用->全局命名空间->JavaScript 基础类型扩展->Array 类型扩展->add 函数
- 5.1 Python 函数-默认参数,*args,**kwargs的使用;作用域-局部空间使用全局变量需要注意的事项等
- :: 指出使用的函数在命名空间中
- ASP.NET AJAX 说明文档->客户端引用->全局命名空间->JavaScript 基础类型扩展->Array 类型扩展->contains 函数
- ASP.NET AJAX 说明文档->客户端引用->全局命名空间->JavaScript 基础类型扩展->Array 类型扩展->addRange 函数
- ASP.NET AJAX 说明文档->客户端引用->全局命名空间->JavaScript 基础类型扩展->Array 类型扩展->clear 函数
- 使用命名空间和类中原本有的函数同时出现时的调用次序
- php命名空间与自动加载函数一起使用
- 避免使用PHP保留字作为常量、类名和方法名,以及命名空间的命名
- python函数和方法都可以访问全局命名空间~这很有用但也很可怕
- ASP.NET AJAX 说明文档->客户端引用->全局命名空间->JavaScript 基础类型扩展->Array 类型扩展->clone 函数
- 命名空间及自动加载函数的使用
- C++在命名空间中使用函数模板
- 函数定义命名空间的使用
- C++中遇到同名函数问题,可以使用命名空间解决