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 ...
随机推荐
- 02.Hibernate配置文件之映射配置文件
映射文件,即xxx.hbm.xml的配置文件 <class>标签:用来将类与数据库表建立映射关系 属性: name:类中的全路径 table:表名(如果类与表名一致,那么table属性可以 ...
- win 7下安装mysql zip格式
mysql 下载地址:https://dev.mysql.com/downloads/mysql/5.5.html#downloads 下载的mysql格式为zip: 下载完成放在除C盘以外的盘. 一 ...
- Java虚拟机系列(一)---Java内存划分
Java和C++之间有一堵由内存管理和垃圾收集技术所围成的“高墙”,墙外的人想进去,墙内的人却想出来. ------摘自<深入理解Java虚拟机> 作为一个Java程序员,因为虚拟机的好 ...
- 2019.10.30 csp-s模拟测试94 反思总结
头一次做图巨的模拟题OWO 自从上一次听图巨讲课然后骗了小礼物以后一直对图巨印象挺好的233 T1: 对于XY取对数=Y*log(x) 对于Y!取对数=log(1*2*3*...*Y)=log1+lo ...
- Servlet开发总结(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口. 用户若想用发一个动态web资源(即开发一个Java程序 ...
- mybatis学习:mybatis的注解开发和编写dao实现类的方式入门
一.使用注解则不需要创建映射配置文件:即xxxDao.xml javaBean为什么要实现Serializable接口? Java的"对象序列化"能让你将一个实现了Serializ ...
- Python eval()函数的用法
Python eval()函数的用法 eval(str)函数很强大,官方解释为:将字符串str当成有效的表达式来求值并返回计算结果.所以,结合math当成一个计算器很好用. eval()函数常见作用有 ...
- TZOJ 3042 切蛋糕(并查集)
描述 KK是个心灵手巧的好姑娘,她做了一个大蛋糕请她的好朋友们来品尝.这个蛋糕分成n×n个正方形小格,每个小格包含一块水果.KK要把蛋糕切成若干块,显然她不会破坏任意一个小格.无聊的某同学在她切蛋糕时 ...
- SQL 约束和表修改语句
1.约束作用: 约束的目的就是确保表中的数据的完整性 2.常用的约束类型如下 主键约束:(Primary Key constraint) 要求主键列唯一,并且不允许为空 唯一约束:(Unique ...
- 【python之路41】web框架
一.web框架介绍 一共有两种web框架 1.既包含socket又能逻辑处理 tornado框架 2.只能处理逻辑 Django bottle flask 二.web框架的本质 众所周知,对于所有的 ...