zoukankan      html  css  js  c++  java
  • PHP基础3--文件加载-错误处理

    主要:

      1-文件加载

      2-错误处理



    文件加载

      文件加载语句

        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 "<pre>";
    13     echo "E_EEROR = ".E_ERROR . "		其对应二进制值为: " . getBinStr(E_ERROR);   //1
    14     echo "<br />E_WARNING = ".E_WARNING. "		其对应二进制值为: " . getBinStr(E_WARNING);  //2
    15     echo "<br />E_NOTICE = ".E_NOTICE. "		其对应二进制值为: " . getBinStr(E_NOTICE);   //8
    16     echo "<br />E_USER_NOTICE = ".E_USER_NOTICE. "		其对应二进制值为: " . getBinStr(E_USER_NOTICE);   //1024
    17     echo "<br />E_ALL = ".E_ALL. "		其对应二进制值为: " . getBinStr(E_ALL);   //32767
    18     echo "</pre>";
    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 .= "<p><b><font color='red'>错误:</font></b>";
    19     $str .= "<br />错误代号是:".$errCode;
    20     $str .= "<br />错误内容是:".$errMsg;
    21     $str .= "<br />错误文件是:".$errFile;
    22     $str .= "<br />错误行号是:".$errLine;
    23     $str .= "<br />发生的时间:".date("Y-m-d H:i:s");
    24     $str .= "</p>";
    25     echo $str;     //输出该“构建”的错误完整处理结果
    26                    //可以将该内容写入到某个文件去,既记录错误日志
    27 }
    28 
    29 //以下是错误代码
    30 echo "<br />aaaa";
    31 echo $v1;   //使用不存在的变量
    32 echo C1;    // 使用不存在的常量
    33 echo "<br />bbbb";
    34 echo "<hr />";
    点击查看自定义错误处理器测试

  • 相关阅读:
    Linux ubuntu 下 git 服务器的配置 应用
    linux ubuntu 11.10 下的android开发环境的搭建!
    转载: Ubuntu下安装JDK图文教程详解 jdkjava630 .bin 的处理方法
    求助 关于openlaszlo的配置问题 。。
    J鬼
    Hibernate 之 概述
    C#实现http协议支持上传下载文件的GET、POST请求
    关于程序员的政治(转)
    使用VisualC#实现断点续传
    HttpWebRequest
  • 原文地址:https://www.cnblogs.com/yangp67/p/8025738.html
Copyright © 2011-2022 走看看