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是一次的意思!
就是在载入之前先进行一次判断,判断当前载入的文件前面是否已经载入过,如果已经载入过,就不再载入了,如果没有载入过,则继续载入!从而保证某个文件在一个文档中不会重复载入!
有时候,只载入一次的判断是非常有必要的,比如,函数不能重复定义!
PHP文件载入和载入路径的更多相关文章
- 插件化开发—动态载入技术载入已安装和未安装的apk
首先引入一个概念,动态载入技术是什么?为什么要引入动态载入?它有什么优点呢?首先要明确这几个问题.我们先从 应用程序入手,大家都知道在Android App中.一个应用程序dex文件的方法数最大不能超 ...
- Oracle RMAN 恢复控制文件到指定的路径
Oracle 数据库通过RMAN恢复控制文件到指定的路径 --------------------------------------------------------- 先查询备份集信息,再指定备 ...
- C#实现把指定文件夹下的所有文件复制到指定路径下以及修改指定文件的后缀名
1.实现把指定文件夹下的所有文件复制到指定路径下 public static void copyFiles(string path) { DirectoryInfo dir = new Directo ...
- find命令查找文件,并排除相应路径
find / -path "/exclude/" -prune -o -name "lsof" -print 查找根目录下文件,并排除/exclude路径
- java 压缩文件 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件
/** * 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件 * * @param files * 文件数组 * @param strZipName * 压缩文件路径及文件名 * @thr ...
- 编译过程中,termcap.h 文件找不到路径 licli.a终于生成
编译过程中,termcap.h 文件找不到路径 查看是linux 源码下找不到termcap.h文件 安装了所有关于*cap*的源码包也不起作用 今天终于解决了这个问题,搜 ...
- Java基础之访问文件与目录——测试文件或目录的路径(TryPath)
控制台程序,测试文件或目录的路径. import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.FileSy ...
- mws文件中的tab文件改为相对路径
用mapinfo将现有的多个图层(tab)文件保存成一个mws工作空间后,将此mws文件发到另一台电脑上后,打开mws,提示无法打开各个tab文件,文件不存在,显示的路径是当时原电脑添加时的绝对路径. ...
- NetBeans 7.2 or 8.0 编辑文件时不显示文件路径。
NetBeans 7.2 or 8.0 编辑文件时不显示文件路径. 仅仅实用鼠标停在标签上一下,才干够看到.非常不方便. 怎样解: http://plugins.netbeans.org/plugin ...
随机推荐
- BZOJ3907 网格 卡特兰数
题目描述 某城市的街道呈网格状,左下角坐标为A(0, 0),右上角坐标为B(n, m),其中n >= m. 现在从A(0, 0)点出发,只能沿着街道向正右方或者正上方行走,且不能经过图示中直线左 ...
- LUOGU P2962 [USACO09NOV]灯Lights
题目描述 Bessie and the cows were playing games in the barn, but the power was reset and the lights were ...
- 原 JEECMS导入IDEA进行二次开发图文教程
JEECMS导入IDEA进行二次开发图文教程 2017年05月15日 17:03:53 Swain_Ho 阅读数 3257 版权声明:本文为博主原创文章,未经博主允许不得转载. https:// ...
- Filter - 全局编码 (装饰者模式)
Tomcat7以前需要处理get乱码,tomcat8以后不需要处理get乱码,因为tomcat内部会处理. 乱码原因: package cn.itcast.web.filter; import jav ...
- 使用C#反射实现用户控件调用父页面方法
using System.Reflection; MethodInfo mi = this.Page.GetType().GetMethod("GetUserName"); //该 ...
- Java爬虫的实现
距离上一次写爬虫还是几年前了,那时候一直使用的是httpclient. 由于最近的项目又需要使用到爬虫,因此又重新查询了一些爬虫相关的框架,其中最合适的是WebMagic 官方文档:https://g ...
- spring-jdbc-aop事务
1 spring整合JDBC 1.1 概述 spring提供了很多模板整合Dao技术 spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术. JDBCTemplate => J ...
- angular7.X配置同时使用localhost和本机IP访问项目
1.项目中找到此文件“node_modules/webpack-dev-server/lib/Server.js”,按照下图修改: 二.修改配置文件package.json,见下图: 三.npm st ...
- windows远程连接linux-安装xfce界面,ubuntn添加新用户
参考:“ 使用xrdp实现windows 远程桌面连接linux” http://blog.csdn.net/qq_33530388/article/details/64502902; http: ...
- Ubuntu18.04 + win10双系统下时间问题
Ubuntu 16.04使用systemd启动之后,时间也改成了由timedatectl来管理 解决的办法可以参考http://blog.sina.com.cn/s/blog_5379c55b0102 ...