🌈学习PHP笔记(二)
包含文件的方式(可多次包含)
require
<?php
require '文件目录';
?>
include
<?php
include '文件目录';
?>
包含文件的方式(一次包含)
require_once:
include_once:
区别:
1、require:遇到错误抛出error类别的错误,停止执行
2、include:遇到错误抛出warning类型的错误,继续执行
3、require_once:、include_once:只能包含一次
4、HTML类型的包含页面中存在PHP代码,如果包含到PHP中是可以被执行的
5、包含文件相当于把包含文件中的代码拷贝到主文件中执行,魔术常量除外,魔术常量获取的是所在文件的信息。
6、被包含的文件在主文件被编译时不执行、运行时加载到内存、独立编译包含文件
包含文件的路径
./ 当前目录
../ 上一级目录
这个是没有指定目录直接写文件名,PHP的寻找机制,这些显示寻找顺序从左往右的目录依次查找。
使用来进行包含文件的目录,可以设置多个,路径之间用分豪隔开。
<?php
set_include_path('目录1;目录2;目录3');
?>
关于正反斜杠
正斜(/):web中目录分隔用正斜:https://erhe.group/
反斜(\):物理地址的分隔用反斜,( windows中物理地址正斜和反斜都可以):c:\web\test\
❌PHP错误处理
错误的级别
1、notice:提示
2、warning:警告
3、error:致命错误
notice和warning报错后继续执行,error报错后停止执行
错误的提示方法
方法一:直接显示在浏览器上
方法二:记录在日志中
错误处理的有关配置
在PHP的配置文件中有一个php.ini配置文件
1、error_reporting = E_ALL // 报告所有的错误
2、display_errors = On // 将错误显示在浏览器上
3、log_errors = On // 将错误记录在日志中
4、error_log = '文件路径' // 错误日志保存的位置
在项目开发中有两个模式:
开发模式:错误显示在浏览器上,不要记录在日志中
运行模式:错误不显示在浏览器上,记录是日志中
<?php
$debug=false; // 开发模式
ini_set('error_reporting',E_ALL); // 所有的错误有报告
if($debug){
ini_set('display_errors','on'); // 错误显示是在浏览器上面
ini_set('log_errors','off'); // 错误不显示在日志中
}else{
ini_set('log_errors','off');
ini_set('log_errors','on');
ini_set('error_log','文件路径'); // 错误日志保存的位置
}
?>
PS:ini_set()
是用来设置PHP的配置参数。
自定义错误处理
通过trigger_error('')
产生一个用户级别的error/warning/notice信息
<?php
$age=100;
if($age>80){
trigger_error('年龄不能超过80岁'); //默认触发了notice级别的错误
trigger_error('年龄不能超过80岁',E_USER_NOTICE); // 触发了notice级别的错误
trigger_error('年龄不能超过80岁',E_USER_WARNING); // 触发了warning级别的错误
trigger_error('年龄不能超过80岁',E_USER_ERROR); // 触发了error级别的错误
}
?>
⭕注意:用户级别的错误的常量名中一定要带有USER
自定义错误处理函数
<?php
function error(){
echo '这是自定义错误处理';
}
set_error_handler('error'); // 注册处理函数,只要有错误就会自动的调用处理函数
?>
还可以带上参数
@param $errno int 错误类别
@param $errstr string 错误信息
@param $errfile string 文件地址
@param $errline int 错误行号
<?php
function error($errno,$errstr,$errfile,$errline){
switch($errno){
case E_NOTICE:
case E_USER_NOTICE:
echo '记录在日志中,管理员上班后处理<br>';
break