php循环,die/exit脚本运行控制,文件加载及错误控制

循环控制

大部分和c/java相同

  • for循环
  • while循环
  • do while循环
  • foreach循环(特有)

循环中断 :

1、break:
    用于完全停止某个循环,让执行流程进入到循环语句后面的语句

2、continue
    用于停止当前正在进行的当次循环,而进入循环的“下一次”过程中去

php中,该两个循环有更强的能力,中断“更多层”循环,语法如下

break 正整数n; // 比如1,2,3
continue 正整数n; // 比如1,2,3

n代表循环的“层”,如

for(...){ // 循环第一层
    for(...){ // 循环第二层
        for(...){ // 循环第三层

        }
    }   
}

goto语句:学此语句的目的是不要用它

die(字符串)/exit(字符串):

exit是die的同义词,他们也可以不加字符串,而是直接停止

作用:输出该字符串后,立即停止php的执行!即后续程序不再执行,包括后续的其他所有php和html代码部分

sleep($n):让程序停止休眠指定的秒数,然后等待过了那个时间后,就继续运行!

注意单位是”秒“

文件加载

综述和基本语法(可以当成是一个函数

1. 有四个文件加载语句:include,require,include_once,require_once;
2. 他们的使用形式完全一样,比如:include "要加载的文件路径";或include("要加载的文件路径");
3. 他们的含义也几乎完全一样,只是在加载失败时或是否重复加这种情况有所不同;
4. 它们可以载入php和html文件。

文件路径问题(有3种路径形式)

(1) 相对路径:是相对于当前文件所在位置来定位某个要加载的文件位置,主要依赖以下两个特殊的路径符号

两个特殊的路径符号

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

我们需要这两个符号来传达位置信息,比如:

    include "./head.php"; // 当前网页所在目录的head.php文件

(2) 绝对路径(分两种)

1、本地绝对路径

    比如:
        include "c:/d1/d2/p1.php";
        include "f:/f1/abc/h2.html";
    特别注意,我们其实几乎度不应该在代码中直接写这种本地绝对路径,其实绝对路径还是很常用的,但是不应该直接写出本地路径来,而是应该通过某种方式动态获取绝对路径,即通过拼凑路径来实现,可以通过_DIR_和$_SERVER("DOCUMENT——ROOT")等系统预定义变量常量来获取

2、网络绝对路径

    比如:
        include "http://www.baidu.com/index.php";

(3) “无路径”(不推荐)

形式:

    include "文件名";

比如:

    include "head.php"; // 系统会去猜,其实系统做了一些工作后会去当前路径找这个文件,此时==include "./head.php";

文件载入和执行过程详解

  • 第一步:从include语句退出php脚本模式(进入html代码模式)
  • 第二步:载入include语句所设定的文件中的代码,并执行之(如同在当前文件中一样)
  • 第三步:退出html模式重新进入php脚本模式,继续执行之后的代码

四个载入语句的区别

(1)include 和 require 的区别:
    1. include 载入失败时(即没有找到该文件),报一个“提示错误”,然后继续执行后续代码
    2. require 载入文件失败时,报错并立即终止程序执行
通常,require用于在程序中,后续代码依赖于载入的文件的时候

(2)include_once 和 require 的区别:
    同include 和 require 的区别

(3)include 和 include_once的区别:
    1. include 载入的文件不判断是否重复,只要有include 语句,就会别载入一次,即此时可能导致重复载入
    2. include_once 载入的文件会有内部判断机制是否“前面代码”已经载入过,如果载入过,就不再载入,否则载入

(4)require 和 require_once 的区别:
    同include 和 include_once 的区别

被载入文件的return 语句的作用:

  • 终止被载入文件后续代码的载入
  • 返回数据给宿主文件

错误控制

错误分类(通常分为三种):

  • 语法错误:程序运行之前,都要检查语法,如果语法错误,就会立即报错,并且不会去执行程序;

  • 运行时错误:就是在程序语法检查通过后,开始运行程序并在此过程中遇到的错误。常见的有三种:

    1. 提示性错误;
    2. 警告性错误;
    3. 致命错误。
  • 逻辑错误:指的是本身可以正常执行,没有保存–但“计算结果”却错了。

错误的分级:

 php语言中,将各种错误进行了不同级别的分类归纳,并形成大约有10几个级别的错误,这就是技术层面的错误分级。每一级别的错误,都有一个代号,这个代号也就是系统内部的”常量而已“,比如:

系统常见错误:

E_ERROR : 致命错误
E_WARNING   : 警告性错误
E_NOTICE    : 提示性错误

用户可自定义的错误:
E_USER_ERROR:
E_USER_WARNING:
E_USER_NOTICE: 

其他:
E_STRICT:严谨性语法检查错误
E_ALL:代表所有错误

详细参考手册-》预定义常量

错误的触发(让错误发生):

有两种方式:

(1)系统触发:程序运行到某行代码,确实出现了某种错误,此时系统就会报错,--这就是触发了系统错误
    1. E_ERROR:致命错误,导致程序无法执行后续语句,比如调用了一个不存在的函数!
    2. E_WARNING:警告性错误,会输出错误提示,并继续执行后续代码(也可能看具体情况,比如require),比如include一个不存在的文件
    3. E_NOTICE:提示性错误,会输出错误提示,并继续执行后续代码,比如:使用不存在的变量或常量
(2)自定义触发:当我们处理某些数据的时候,本来数据本身是没有错误的,但根据应用(业务)的需要,会要求数据满足某种条件,而该数据并不满足的时候,我们就可以在程序中“主动”触发(创建)一个错误,以表明该数据的”非法性“

    语法形式:trigger_error(“错误提示内容”,错误常量);

错误报告的显示问题(就是显示在网页上的错误提示内容!):

(1)是否显示报告:

    两种方法

    (1)在php.ini文件中,设定display_errors的值,Off(不显示),On(显示)

    (2)直接在php脚本文件中使用函数ini\_set()来控制是否显示
    ini_set("display_errors",0); // 0不显示错误报告,1显示报告

    注意:

    1. 不管哪种形式,该单词都是一样的:display_errors;
    2. 使用php.ini配置,影响的是全局(即所有的php网页);(前提是apache装载了php.ini)
    3. 在某个脚本代码中使用ini_set()设置,就只影响该脚本代码本身--这是常用的方式
    4. 脚本中的设置优先于php.ini的设置

(2)显示哪些级别的错误报告(error_reporting)

    两种做法:

    做法1:在php.ini中修改error_reporting的值,如:
    error_reporting = E_NOTICE | E_WARNING | E_ERROR
    error_reporting = E_ERROR | E_USER_ERROR,要想显示所所有的错误,要将error_reporting = E_ALL | E_STRICT

    做法2:在当前的脚本代码中:

    跟php.ini中设置其实是一样的,举一些例子如下:

    ini_set("error_reporting",E_NOTICE); // 显示一种错误
    ini_set("error_reporting",E_NOTICE|E_WARNING); // 显示两种错误
    ini_set("error_reporting",E_NOTICE|E_WARNING|E_ERROR); // 显示三种错误
    ini_set("error_reporting",E_ALL|E_STRICT); // 这才代表显示所有错误(php5.3),5.4中E_ALL代表所有错误


显然,前提是“display_errors”设置为On()或1
,表示显示错误

错误日志的显示问题:

 错误日志其实就是错误报告,只是它会“写到文件中”,此时就称为错误日志,也有两个问题,每个问题也有两种做法

(1)是否记录:

php.ini中:
    log_errors = On 或 Off
脚本中:
ini_set("log_errors",1); 或 0

补充一句
    1. ini_set("php配置项",值); // 用于脚本中设置php.ini中某项设置的值
    2. $v1 = ini_get("php配置项"); // 获取php.ini中某项设置的值

(2)记录到哪里 error_log

一般只有两种写法:

写法1:直接使用一个文件名,此时系统会自动在每个文件夹下都建立该文件名,并用其记录该文件夹下的所有网页文件发生的错误信息。
如:ini_set("error_log","my_error.txt"); // 记录到该文件中

写法2:使用一个特殊的名字syslog,此时所有错误都会记录到系统日志中,即ini_set("error_log","syslog"); // 记录到系统日志中

系统日志文件位置:控制面板》管理工具》事件查看器》window日志》应用程序:

自定义错误处理器:就是一旦发生错误,用来处理该错误的一种“机器”--其实就是一个函数

自定义错误处理,就是指让系统不要处理错误了,而完全由我们(开发者)来对错误进行处理:显示和记录

如:

    // 我们准备要自己来定义错误“处理器”了
    // 第一步:设定作为错误处理的函数名
    set_error_handler("my_error_handler");
    // 第二步:定义该函数
    // 该函数可以形式可以不需要参数,但我们可以给4个参数来接受错误相关信息,因为这个函数系统会调用并传入错误相关信息,所以我们自己不该调用这个函数
    // 四个参数分别是错误代号,错误内容,错误文件,错误行号
    function my_error_handler($errCode,$errMsg,$errFile,$errLine){
        $str = "";
        $str.="<p><font color='red'>大事不好,发生错误!</font>";
        $str .="<br />错误代号为:".$errCode;
        $str .="<br />错误内容为:".$errMsg;
        $str .="<br />错误文件为:".$errFile;
        $str .="<br />错误行号为:".$errLine;
        echo $str; // 输出该“构建”的错误完整处理结果
        // 也可以将该内容“写入”到某个文件中,也就是所谓的记录错误日志,这需要文件操作
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值