PHP文件载入和载入路径
一.文件载入
所谓的文件的载入,就是指将需要的目标文件的代码载入到当前的位置上,从某种意义上来说,文件载入也是一种流程控制!
文件载入的主要目的是体现网站的分层设计,因为不同的页面有很多相同的区域(相同的代码)这些相同的代码区域只需要书写一次,在需要的时候将该文件载入进来即可!以代码的重用!
PHP提供了四种文件载入的语句:
include,include_once,require,require_once
它们主要的功能都是实现文件的载入,只是有些语法上的差别!
include
基本的语法形式:
include ‘目标文件地址’;
执行的结果:
几点注意:
1, 载入的文件无论是什么类型,我们需要的只是目标文件内的代码,而与文件的后缀名无关!
2, 载入的目标文件内,无论是html代码还是php代码,都可以正常的执行!
载入过程(原理)
载入的过程发生在代码的运行阶段,而不是代码的预编译阶段
1, 执行到include的时候,先退出PHP模式,进入到了HTML模式
2,载入目标文件的源代码,相当于将目标文件里面的所有的内容复制到目标位置
3,将载入的代码从源代码开始预编译并执行!
4,再次进入到PHP模式!
二.载入的路径问题
可以分成:相对路径,默认路径和绝对路径!
相对路径
相对于当前脚本文件所在的位置的路径!典型的相对路径有:
./ :当前执行脚本所在的当前目录
../ :当前执行脚本所在的上级目录
(补充:其实任何目录下都有两个隐藏的目录,一个就是.一个就是..)
/ :在真实的项目中一般代表网站的根目录
默认路径
注意:
默认路径是可以配置的,而不仅仅代表当前路径!
在早期的项目中,有一个比较简单的做法,把所有可能被载入的文件全部放到一个统一的目录下,然后将该目录配置成默认路径,而在进行文件载入的时候使用默认路径即可!
然后在php.ini中配置默认路径:
直接修改配置文件,对所有的项目都生效了,所以还有一个函数可以使用:set_include_path作用就是设置当前脚本的默认的路径!
set_include_path(‘当前脚本的默认路径’);
绝对路径
当出现多重载入的时候,根据相对路径很容易发生混淆或者错误,所以,在真实的项目中,一般都采用绝对路径进行载入!
因为在载入一个文件的时候,该文件的绝对位置是不可能发生改变的,而相对路径是取决于当前的代码在哪个文件内执行,会发生改变!
于是,又遇到了另外一个问题,当我们进行项目移植的时候,绝对路径的地址很有可能会发生改变,所以,在真实的项目中,应该先定义目录常量!
不同的载入语句的区别
require与include
同样适用于require_once和include_once
都是在进行文件的载入,只是对目标文件的依赖程度不一样,所产生的错误级别也不一样:
错误的级别:
error:致命错误,比如出现语法错误
warning:警告错误
Notice:错误级别最低
require:必须载入,如果目标文件不存在,则报告一个error级别的错误,后续代码就停止运行!
include:载入,如果目标文件不存在,则报告一个warning级别的错误,但是后续代码继续执行!
include与include_once
同样适用于require与require_once
这里的once是一次的意思!
就是在载入之前先进行一次判断,判断当前载入的文件前面是否已经载入过,如果已经载入过,就不再载入了,如果没有载入过,则继续载入!从而保证某个文件在一个文档中不会重复载入!
有时候,只载入一次的判断是非常有必要的,比如,函数不能重复定义!