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 ...
随机推荐
- HZOI2019熟练剖分(tree)
题目大意:https://www.cnblogs.com/Juve/articles/11186805.html 题解: 先给出官方题解: 其实这题跟期望没什么关系,因为E=$\sum_\limits ...
- Django项目:CRM(客户关系管理系统)--62--52PerfectCRM实现CRM客户报名流程学生合同审核
# sales_urls.py # ————————47PerfectCRM实现CRM客户报名流程———————— from django.conf.urls import url from bpm. ...
- Maven中央仓库地址大全,Maven中央仓库配置示例
< Maven 中央仓库地址大全 > 在上一篇文章中完成了 < Maven镜像地址大全 >,后来又花了时间又去收集并整理了关于 maven 远程仓库地址,并整理于此,关于 Ma ...
- ionic4环境搭建
1.下载安装node 下载地址:https://nodejs.org/en/ 安装后,win+R输入cmd,回车运行cmd命令窗口,输入下面的命令验证node是否安装成功: 如果出现上图所示,则证明n ...
- curl下载安装与使用
下载: https://curl.haxx.se/download.html 安装: 二进制安装.即解压即可. 使用 1.获取页面内容. 不加任何参数时,默认会发送GET请求来获取url内容到标准输出 ...
- 好用的Win10快捷键
好用的Win10快捷键 Top 01 基础按键 Win+E: 打开"资源管理器". Win+R: 打开"运行"对话框. Win+L: 锁定当前用户. Win+D ...
- 【python之路面向对象】初级篇
概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过程编程最易被初学 ...
- 优雅的css写法
一.利用好代码折叠 css也可以进行优雅的代码折叠而且会比html更好看 折叠后的效果: 这样就可以很舒服的把它折叠起来. 二.向Twitter Bootstrap学习 1. 学习的第一点就是用cla ...
- MacBook安装QF9700网卡驱动
HOW TO USE A GENERIC USB ETHERNET ADAPTER QF9700 ON MAC OS X 20 February 2016 macOS Zahid Mahmood ...
- golang redis_example
main.go package main import ( "fmt" "github.com/garyburd/redigo/redis" ) func ma ...