PHP基础11-文件包含

文件包含原理

文件加载原理

php代码的执行流程

  1. 读取代码文件(PHP程序)
  2. 编译:将PHP代码转换成字节码(生成opcode)
  3. zendengine来解析opcode,按照字节码去进行逻辑运算
  4. 转换成对应的html代码

    文件加载原理

  5. 在文件加载(include或者require)的时候,系统会自动的将被包含文件中的代码相当于嵌入到当前文件中
  6. 加载位置:在哪加载,对应的文件中的代码嵌入的位置,就是对应的include的位置
  7. 在PHP中被包含的文件是单独进行编译的

php文件在编译的过程中如果出现了语法错误,那么会失败(不会执行)但是如果被包含文件有错误的时候,系统会在执行到include这条语句的才会报错

include和include_once的区别(require和require_once的区别相同)

include 系统碰到一次,执行一次;如果对同一个文件进行多次加载,那么系统会执行多次

//系统提示常量重名


include_once 系统碰到多次也只会执行一次,如果文件已被包含过,则不在执行

系统发现已经被包含过,故不执行包含文件,没有报错

require和include的区别:本质都是包含文件,唯一的区别在于包含不到文件的时候,报错的形式不一样

include的错误级别较轻,不会影响后面代码的执行



reqire的错误级别较高,会影响后面代码的执行

文件加载路径

文件在加载的时候需要指定文件路径才能保证PHP正确的找到对应的文件
文件的加载路径包含两大类

绝对路径

  1. 从磁盘的根路径开始(本地绝对路径)
    windows:盘符(如C):/路径/PHP文件
    linux:/路径/PHP文件
  2. 从网站的跟目录开始(网络绝对路径)
    /:相对于网站主机名字对应的路径
    localhost/index.php->假设E:/server/apache/htdocs/index.php

    相对路径:从当前文件所在的目录开始的路径

    .或者./都表示当前文件夹
    ../表示上级目录(当前文件夹的上一层文件夹)

    对比

    1.绝对路径相对效率偏低,但是相对安全(路径不会出问题)
    2.相对路径相对效率高些,但是容易出错(相对路径会发生改变)

文件嵌套包含

文件嵌套包含:一个文件包含另外一个文件,同时被包含文件又包含了另一个文件



嵌套包含的时候容易出现相对路径出错的问题:相对路径会因为文件的包含而改变(./或者../):windows下,每一个文件夹都有.和 ..的文件夹



如果去掉./ 就不会出错