PHP基础知识之include和require的区别以及错误等级
载入语句的区别
-
include和require的区别
include 载入失败时(没有找到该文件),报一个“提示错误”,然后继续执行后续代码; require载入文件失败是,报错并立即终止执行 通常,require用于在程序中,后续的代码依赖于载入的文件的时候
-
include_once和include_once的区别
include_once 载入失败时(没有找到该文件),报一个“提示错误”,然后继续执行后续代码; require_once载入文件失败是,报错并立即终止执行
-
include和include_once的区别
include载入的文件不判断是否重复,只要有include语句,就会载入一次(会造成重复导入) include_once载入的文件会有内部判断机制是否“前面代码”已经载入过,如果载入,就不再载入
-
require和require_once的区别
同include和include_once的区别
错误处理
错误的分类
-
语法错误
程序运行之前,,都要先检查语法。如果有错误,就会立即报错,并且不会去执行程序。
-
运行时错误
就在程序语法检查通过后,开始运行程序并在此过程中遇到的错误。常见的有3种: 1、提示性错误 2、警告性错误 3、致命性错误
-
逻辑错误
程序本身可以正常执行,没有报错--但“计算结果”却报错了。
错误等级
-
PHP中系统常见错误
E_ERROR:致命性错误 E_WARNING:警告性错误 E_NOTICE:提示性错误 用户可以自定义的错误: E_USER_ERROR:自定义致命错误 E_USER_WARNING:自定义警告性错误 E_USER_NOTICE:自定义提示性错误 其他: E_STRICT:严谨性语法检查错误 E_ALL:所有错误
PHP手册参考
错误的触发
-
系统触发
程序运行到某行代码,确实出现了某种错误,此时系统就会报错——这就是触发了系统错误。
系统触发的典型错误有3种: 1、E_NOTICE:提示性错误,会输出错误提示,并继续执行后续代码; 2、E_WARNING:警告性错误,会输出错误提示,并继续执行后续代码(也可能看具体情况,比如require) 比如include载入一个不存在的文件。 3、E_ERROR:致命错误:导致程序无法执行后续语句:比如调用一个不存在的函数
-
自定义触发
当我们处理某些数据的时候,本来数据本身是没有错误的,但根据具体应用(业务)的需要,会要求数据满足某种条件,而该数据并不满足的时候,我们就可以在程序中“主动”去触发(创建)一个错误,以表明该数据的“非法性”。
语法形式:
trigger_error("错误提示信息内容",3种用户错误代号之一);
其中触发了用户的致命错误(E_USER_ERROR),也会终止程序的后续执行。
是否显示错误报告(display_errors):
总共有两种做法:
1、在php.ini文件中,设定display_errors的值,on(显示)、off(不显示)。
注:作为开发阶段,我们都应该显示错误信息
2、在php的脚本文件中设置使用函数ini_set()来对其进行设置:
ini_set('display_errors',0);//不显示错误报告,1为显示
显示哪些级别的错误报告(error_reporting):
1、在php.ini文件中,设置error_reporting=E_ALL | E_STRICT (表示目前代表“所有错误”都显示)
2、在当前的脚本代码中:
ini_set(“error_reporting”, E_NOTICE); //就显示该一个级别的错误
ini_set(“error_reporting”, E_NOTICE | E_WARNING), //显示2个级别
ini_set(“error_reporting”, E_NOTICE | E_WARNING | E_ERROR), //显示3个级别
ini_set(“error_reporting”, E_ALL | E_STRICT), //这才代表显示所有错误!
错误日志的记录
错误日志其实就是错误报告,只是它会“写入文件中”,此时就成为错误日志!
-
是否记录log_errors:
两种实现方式 1、php.ini中: log_errors=On 或者Off 2、脚本中: ini_set("log_errors",1);//0:不显示,1:显示 注: ini_set("php设置项",值);//用于脚本中设置php.ini中某项的值 ini_get("php设置项");//用于获取php.ini中的某项的值
-
设置error_log的路径
两种实现方式: 1、ini_set("error_log","error.txt");//记录到该文件 2、使用一个特殊的名字“syslog”,则此时所有错误信息都会记录到系统的“日志文件”中。ini_set("error_log","syslog");//记录到系统日中
自定义错误处理器
自定义错误处理,就是指:让系统不要处理错误了,而是完全由开发者来对错误进行处理:显示和记录。
具体实现:
1、设定要处理错误的函数名
set_error_handler("error_handler");
2、定义函数
function error_handler(){
//具体实现
}
珍惜时间,不断实践!