PHP学习之文件包含
定义与产生
在项目实践中,有很多的代码需要重复调用,这是只要将需要重复调用的代码写在一个文件当中,重复调用这个文件就好。
分类
动态、静态:输入内容用户是否可控
远程、本地:文件源在哪里
向上、向下:被包含文件是作为文件源,还是输出通道
主要函数
include :包含并执行文件
include_once 与include相同,区别在于会自动判断是否某个文件,一个文件只包含一次
require
require_once
require 、require_once 与include、include_once 的区别在于两者的报错程度不同,include只是提出警告,前者则是会停止运行。
include 与 include_once
inlcude 加载一次执行一次
once是指执行一次
文件路径的先后顺序
1、指定的文件路径
2、include_path
3、脚本所在路径
4、当前的工作路径
包含的基本语法
1、include’’;
2、include(’’); //注意文件路径问题,文件要能够被找得到。
实操——基本包含
被包含文件
包含文件
输出
实操——向下包含
第一次没有成功,应该是变量重复定义的原因
文件加载原理
1、将被包含文件的代码嵌入包含文件中
2、位置是包含文件中的include等函数的位置,等同于替换掉他们
3、在php文件中,被包含文件的单独编译的
单独编译举例
PHP是解释性语言,所以当代码有错误是便不再执行,但当只有被包含文件错误时,代码会执行到include这一语句才停止。
虽然是单独编译,但是空间也是在包含文件的空间内。
PHP代码执行流程
1、读取代码文件(PHP代码)
2、将其编译成字节码(opcode)
3、zendengine来解析opcode,按照字节码来进行逻辑运算
4、 将其转换成html
实操——报错(被包含文件单独编译)
这里是主文件有错误,整个代码都不执行(define 没有分号)
主文件仍然在运行,只有被包含文件没有运行。
//在进行代码实操的时候要注意PHP的版本,有时版本也会产生一些奇奇怪怪的问题。
实操——include与include_once
当换成include_once 后就没有重复定义的提醒了
实操—— include 与 require
include是warning
同时根据报错可以看到,a没有定义变量,可以为include继续运行提供实例
而,require是fatal error
实操——文件加载路径
相对路径
默认是当前路径,可以找到被包含文件
当前目录也可以找到PHP文件
…/的应用
绝对路径
绝对路径下寻找PHP文件
嵌套包含
首先,在www.文件夹下新建了father文件夹,在father文件夹下新建了,include.php 与son1.php
同目录包含
两级嵌套
目前,已经出现了问题,没有找到待包含文件
因为路径的问题,最多在当前和脚本所在目录寻找,所以找不到子目录的son1.php,又因为可以在当前工作目录查找,所以include不用前面建文件夹的名称
三级嵌套
同样出现问题了
)]
因为路径的问题,最多在当前和脚本所在目录寻找,所以找不到子目录的son1.php,又因为可以在当前工作目录查找,所以include不用前面建文件夹的名称
三级嵌套
同样出现问题了
修改方法如二级嵌套