不同要求加载不同php文件,PHP文件加载和错误处理的介绍

这篇文章主要介绍了关于PHP文件加载和错误处理的介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

知识点:

1-文件加载

2-错误处理

b12fab7f77fd99c36f6167f3fb5a8db0.png

9447a9847c869e6c27309b4534e97f78.png

文件加载

文件加载语句

1) 4个文件加载语句:include, require, include_once, require_once

2) 使用形式相同。include “要加载的文件完整路径”; 或 include(“要加载的文件完整路径”);

如: include "d:/index.php";

3) 可以载入的文件: php 或 html文件

路径

1) 相对路径: 相对于当前网页文件所在的位置来定位某个被加载的文件位置

./ : 表示当前位置,即当前网页文件所在的位置(目录);

../ : 表示上一级位置,即当前网页文件所在的位置的上一级位置(目录);

2)绝对路径

本地绝对路径; 如: include "d:/demo/index.php";

网络绝对路径; 如: include "http://www.baidu.com/demo/index.php"

3) 不写路径,直接文件名

实质是加载当前目录下的指定文件名

如: include "index.php"; //PHP语言引擎会在当前网页目录下找该文件

文件载入执行过程

step 1: 从include|require 语句处退出PHP脚本模式(进入html代码模式)

step 2:载入include|require 语句所设定的文件中的代码,并执行

step 3:退出html模式重新进入php脚本模式,继续之后的代码

include,include_once, require,require_once的区别

1) include 与 require 的区别, 或 include_once与require_once的区别

include或include_once 载入文件失败时(即没有找到该文件),报“提示错误“,然后继续执行后续代码;

require 或 require_once载入文件失败时,报错并立即终止执行。

一般,require用于在程序中,后续的代码依赖于载入的文件的时候。

2) inlcude 与 include_once, 或require与require_once的区别

include 或 require载入的文件不判断是否重复,只要有include或 require语句,就会载入一次---即可能重复载入。

include_once或require_once载入的文件会有内部判断机制是否“前面代码“已经载入过,如果载入过,就不再载入。

如: 如网页中常见两边有相同的广告,就是用include

被载入文件中return的使用

1) include,require,include_once,require_once载入语句,如果载入成功返回1,载入失败返回false

2) 如果被载入的文件中有return, 则在该return后的该文件内容不被载入 --终止载入

可以用于: 被载入文件给载入文件返回一个数据

错误处理

错误分类

1) 语法错误

如果语法有错误,就会立即报错,并且不会去执行程序

2) 运行时错误

在程序语法检查通过后,开始运行程序,并在此过程中遇到的错误

常见3类错误: 提示性错误,警告性错误,致命错误

3) 逻辑错误

程序本身可以正常执行,没有报错。但并不是想要的结果。

错误分级

1) 技术层面的错误分级: PHP语言中,将各种错误进行了不同级别的分类归纳

每一级别的错误,都有一个“代号”,这个代号是系统内部的一个“常量”

2)系统常见错误

E_ERROR: 致命错误

E_WARNING: 警告性错误

E_NOTICE: 提示性错误

3) 用户自定义错误

E_USER_ERROR: 自定义致命错误

E_USER_WARNING: 自定义警告性错误

E_USER_NOTICE: 自定义提示性错误

4) 其他

E_STRICT: 严谨性语法检查错误

E_ALL: 代表所有错误

详细参考手册: 函数参考》影响PHP行为的扩展》错误处理和日志记录》预定义常量

1 <?php

2 function getBinStr($e) {

3 $s = decbin($e); //这是一个二进制数字字符串

4 /*

5 str_pad($str1,长度n,$str2,位置w)函数:

6 将字符串$str1,用字符串$str2填充到指定的长度n,

7 可以指定填充的位置w,左边填充还是右边填充

8 */

9 $s1 = str_pad($s,16,"0",STR_PAD_LEFT);

10 return $s1;

11 }

12 echo "

";

13 echo "E_EEROR = ".E_ERROR . "\t\t其对应二进制值为: " . getBinStr(E_ERROR); //1

14 echo "
E_WARNING = ".E_WARNING. "\t\t其对应二进制值为: " . getBinStr(E_WARNING); //2

15 echo "
E_NOTICE = ".E_NOTICE. "\t\t其对应二进制值为: " . getBinStr(E_NOTICE); //8

16 echo "
E_USER_NOTICE = ".E_USER_NOTICE. "\t\t其对应二进制值为: " . getBinStr(E_USER_NOTICE); //1024

17 echo "
E_ALL = ".E_ALL. "\t\t其对应二进制值为: " . getBinStr(E_ALL); //32767

18 echo "

";

19 ?>

查看错误分级对应的二进制数测试

错误触发

1) 方式1: 系统触发

典型错误3种:

E_NOTICE: 提示性错误: 会输出错误提示,并继续执行后续代码;如:使用不存在的变量或常量

E_WARNING: 警告性错误: 会输出错误提示,并继续执行后续代码; 如: include载入一个不存在的文件:

E_ERROR: 致命错误: 导致程序无法执行后续语句; 如: 一个不存在的函数!!

2) 方式2: 自定义触发

1) 概念: 当处理某些数据时,数据本身没有错误,但根据具体应用(业务)的需要,会要求数据满足某种条件,而该数据并不满足的时候,可以在程序中“主动”去触发(创建)一个错误,以表明该数据的“非法性”。

2) 语法形式:trigger_error(“错误提示信息内容”,3种用户错误代号之一);

如果触发了用户的致命错误(E_USER_ERROR),会终止程序的后续执行

错误报告的显示

1) 错误报告: 显示在网页上的错误提示内容

2) 是否显示错误报告 ? display_errors

方式1:全局设置

修改配置文件php.ini 的配置项 display_errors = On; //表示显示 如果是Off表示关闭

方式2: 局部设置

在php脚本文件中使用函数ini_set()来对它进行设置; 如 ini_set("display_errors",0); //不显示错误报告

该方式设置要优先于全局设置

3) 显示哪些级别的错误报告? error_reporting

前提: display_errorrs=On;

方式1: 全局设置

修改配置文件php.ini 的配置项error_reporting, 如 : error_reporting = E_NOTICE | E_WARNING | E_ERROR

方式2: 局部设置

在php脚本文件中使用函数ini_set()来对它进行设置 , 如init_set(“error_reporting”,E_NOTICE | E_WARNING | E_ERROR),

错误日志的记录

1)是否记录错误日志?log_errors

方式1: 全局设置

修改配置文件php.ini 的配置项log_errors, 如 : log_errors= On; //记录错误日志

方式2: 局部设置

在php脚本文件中使用函数ini_set()来对它进行设置 , 如init_set(“log_errors”,1);//记录错误日志

获取php.ini配置项: ini_get("配置项"); //获取php.ini的指定配置项值

2)记录到哪里? error_log

可以指定位置或记录到系统日志中

指定位置文件中:直接使用文件名,系统会自动在文件夹下都建立该文件名,并用其记录该文件夹下的所有网页文件发生的错误信息。

ini_set("error_log", "myError.txt"); //如果有错误,将记录在myError.txt文件中

写入系统日志中: ini_set("error_log", "syslog");//所有错误日志记录到系统 日志文件 中

自定义错误处理器

1)错误处理器: 发生错误,用来处理该错误的一种方法。实质就是一个函数

2) 自定义错误处理器: 将原本有系统处理错误变为开发者自定义对错误显示和记录处理

3) 分2步:

step 1: 设定用于处理错误的函数 set_error_handler("函数名"); 如 set_error_handler('myError');

step 2:声明定义处理错误的函数。 如 function myError($errCode, $errMsg, $errFile, $errLine) { //错误处理 }

1 <?php

2 //自定义错误处理器

3 //第一步: 设定要作为错误处理的函数名

4 set_error_handler("my_error_handler");

5

6 //第2步: 定义函数

7 /**

8 * 自定义错误处理函数

9 * 该函数不要在程序中调用,一发生错误会被自动调用,而且会传入该4个实参数据

10 * @param string $errCode 错误代号(级别)

11 * @param string $errMsg 错误信息的内容

12 * @param string $errFile 发生错误的文件名

13 * @param int $errLine 代表发生错误的行号

14 * @return void

15 */

16 function my_error_handler($errCode,$errMsg,$errFile,$errLine) {

17 $str = '';

18 $str .= "

错误:";

19 $str .= "
错误代号是:".$errCode;

20 $str .= "
错误内容是:".$errMsg;

21 $str .= "
错误文件是:".$errFile;

22 $str .= "
错误行号是:".$errLine;

23 $str .= "
发生的时间:".date("Y-m-d H:i:s");

24 $str .= "

";

25 echo $str; //输出该“构建”的错误完整处理结果

26 //可以将该内容写入到某个文件去,既记录错误日志

27 }

28

29 //以下是错误代码

30 echo "
aaaa";

31 echo $v1; //使用不存在的变量

32 echo C1; // 使用不存在的常量

33 echo "
bbbb";

34 echo "


";

点击查看自定义错误处理器测试

7bc70a9ea71966e4abdf212a7104bcfe.png

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 支持向量机非线性回归通用MATLAB程序解析 #### 一、概述 本文将详细介绍一个基于MATLAB的支持向量机(SVM)非线性回归的通用程序。该程序采用支持向量机方法来实现数据的非线性回归,并通过不同的核函数设置来适应不同类型的数据分布。此外,该程序还提供了数据预处理的方法,使得用户能够更加方便地应用此程序解决实际问题。 #### 二、核心功能与原理 ##### 1. 支持向量机(SVM) 支持向量机是一种监督学习模型,主要用于分类和回归分析。对于非线性回归任务,SVM通过引入核技巧(kernel trick)将原始低维空间中的非线性问题转换为高维空间中的线性问题,从而实现有效的非线性建模。 ##### 2. 核函数 核函数的选择直接影响到模型的性能。本程序内置了三种常用的核函数: - **线性核函数**:`K(x, y) = x'y` - **多项式核函数**:`K(x, y) = (x'y + 1)^d` - **径向基函数(RBF)**:`K(x, y) = exp(-γ|x - y|^2)` 其中RBF核函数被广泛应用于非线性问题中,因为它可以处理非常复杂的非线性关系。本程序默认使用的是RBF核函数,参数`D`用于控制高斯核函数的宽度。 ##### 3. 数据预处理 虽然程序本身没有直接涉及数据预处理的过程,但在实际应用中,对数据进行适当的预处理是非常重要的。常见的预处理步骤包括归一化、缺失值处理等。 ##### 4. 模型参数 - **Epsilon**: ε-insensitive loss function的ε值,控制回归带宽。 - **C**: 松弛变量的惩罚系数,控制模型复杂度与过拟合的风险之间的平衡。 #### 三、程序实现细节 ##### 1. 函数输入与输出 - **输入**: - `X`: 输入特征矩阵,维度为(n, l),其中n是特征数量,l是样本数量。 - `Y`: 目标值向量,长度为l。 - `Epsilon`: 回归带宽。 - `C`: 松弛变量的惩罚系数。 - `D`: RBF核函数的参数。 - **输出**: - `Alpha1`: 正的拉格朗日乘子向量。 - `Alpha2`: 负的拉格朗日乘子向量。 - `Alpha`: 拉格朗日乘子向量。 - `Flag`: 标记向量,表示每个样本的类型。 - `B`: 偏置项。 ##### 2. 核心代码解析 程序首先计算所有样本间的核矩阵`K`,然后构建二次规划问题并求解得到拉格朗日乘子向量。根据拉格朗日乘子的值确定支持向量,并计算偏置项`B`。 - **核矩阵计算**:采用RBF核函数,通过`exp(-(sum((xi-xj).^2)/D))`计算任意两个样本之间的相似度。 - **二次规划**:构建目标函数和约束条件,使用`quadprog`函数求解最小化问题。 - **支持向量识别**:根据拉格朗日乘子的大小判断每个样本是否为支持向量,并据此计算偏置项`B`。 #### 四、程序扩展与优化 - **多核函数支持**:可以通过增加更多的核函数选项,提高程序的灵活性。 - **自动调参**:实现参数自动选择的功能,例如通过交叉验证选择最优的`Epsilon`和`C`值。 - **并行计算**:利用MATLAB的并行计算工具箱加速计算过程,特别是当样本量很大时。 #### 五、应用场景 该程序适用于需要进行非线性回归预测的场景,如经济预测、天气预报等领域。通过调整核函数和参数,可以有效应对各种类型的非线性问题。 ### 总结 本程序提供了一个支持向量机非线性回归的完整实现框架,通过灵活的核函数设置和参数调整,能够有效地处理非线性问题。对于需要进行回归预测的应用场景,这是一个非常实用且强大的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值