HP的文件引用涉及到四个函数:

文件引用

1.include()
2.include_once()
3.require()
4.require_once()

这四个函数常常会给PHP初学者造成困扰,总的来说困扰有这么几个:
1.四个函数的区别
2.这四个函数的适用环境
3.使用以上函数后造成的路径问题

下面我们就这三个典型的问题进行分析。
一、区别:
1.include_once()与require_once()在引入文件时,会检测该文件是否在之前已经被引入过,如果已经被引入过则直接返回TRUE。如果没有被引入过,则引入文件。而其他两个函数不会对文件是否被重复引入做出检测。

注意:在PHP 4中的 Windows 系统下是不区分大小写的。也就是说下面的代码都是引入的a.php。当然,PHP 5不会再出现这样的情况了。
include_once "a.php"; include_once "A.php";

2.include()与inclue_once()在引入文件失败时,只会产生警告信息,但是不会终止程序继续向下执行。
Warning:require(wrongFile.php)[function.require]: failed to open stream:No such file or directory in C:homewebsite est.php on line 5
而其他两个函数在文件引入失败时,会产生致命错误,并终止整个程序的运行。
Fatal error:require()[function.require]:Failed opening required 'wrongFile.php'(include_path='.;C:php5pear')in C:homewebsite est.php on line 5

二、使用环境
1. 由第二条实际上我们已经可以看出他们各自的使用环境了。include()适合用来引入普通文件(例如:视图模板),而require()适合用来引入核 心文件(例如:核心类文件)。因为前者引入的文件相对于整个程序系统来说重要性要低一些,所以就算出错也可以继续执行后面的程序。但是如果说一个系统或者 框架的核心文件都引入失败的话,那么程序还有继续运行下去的必要吗?

2.include_once()与require_once()实际上就是在第三条基础上对引入文件做了更严格的重复性检测而已。同样是前者一般性引入,后者重要引入。

三、路径
至 于相对路径问题,只要记住一个原则就可以了:加入A引入B,B同时又引入了C。那么,B中引入C的相对路径应该以A--C的相对路径来写。因为,PHP的 文件引入实际上就相当于将B的代码复制到A中,也就是说我们从头到尾都在A中执行代码,当然应该以A为参考来引入C了。

四、其他
1.我们还可以用include()来引用远程PHP文件,并且先这个被引用的文件传参,当然这有一定的先决条件。(详见官方手册)
include 'http://www.example.com/file.php?foo=1&bar=2';

2.注意:这几个函数不一定非得要在后面加括号
include('a.php'); include("a.php"); include 'a.php'; include "a.php";
以上的写法都是可以的。当然,如果后面的参数包含变量,你得斟酌一下。
OK,PHP文件引入就分析到这里。更多精彩内容敬请关注重庆PHP社区!

作者:Angrybird
来源: 重庆PHP http://www.php-chongqing.com

原文地址: http://www.php-chongqing.com/index.php/article/15

重庆PHP原创,转载请保留版权信息PHP之PHP文件引用详解

转载于:https://www.cnblogs.com/zcds-jk/p/4345270.html

PHP之PHP文件引用详解相关推荐

  1. python编译器怎么运行不在路径中的py文件_对python当中不在本路径的py文件的引用详解...

    众所周知,如果py文件不在当前路径,那么就不能import,因此,本文介绍如下两种有效的方法: 方法1: 修改环境变量,在~/.bashrc里面进行修改,然后source ~/.bashrc 方法2: ...

  2. php .htaccess 的作用,php .htaccess文件使用详解

    1..htaccess文件使用前提 .htaccess的主要作用就是实现url改写,也就是当浏览器通过url访问到服务器某个文件夹时,作为主人,我们可以来接待这个url,具体地怎样接待它,就是此文件的 ...

  3. C 和 C++ 文件操作详解

    来源:http://www.cnblogs.com/likebeta/archive/2012/06/16/2551662.html 来源:http://www.cnblogs.com/likebet ...

  4. mysql映射mapper_Mybatis中Mapper映射文件使用详解

    紧接上文所述,在这篇文章中我将对Mapper映射文件进行详细的说明. Mapper映射文件是一个xml格式文件,必须遵循相应的dtd文件规范,如ibatis-3-mapper.dtd.我们先大体上看看 ...

  5. Pom.xml文件教程详解

    原创整理不易,转载请注明出处:史上最全的maven pom.xml文件教程详解 代码下载地址:http://www.zuidaima.com/share/1781583829978112.htm   ...

  6. python setting.py_python基础教程:Django框架的中的setting.py文件说明详解

    这篇文章主要介绍了Django框架的中的setting.py文件说明详解,这个文件包含了所有有关这个Django项目的配置信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.加载数据库,数据库 ...

  7. k8s的yaml文件配置详解(三)

    k8s的服务资源文件配置详解 注:本文章只作配置项解释,请灵活运用 --- #Service kind: Service apiVersion: v1 metadata: name: service ...

  8. Django框架的中的setting.py文件说明详解

    这篇文章主要介绍了Django框架的中的setting.py文件说明详解,这个文件包含了所有有关这个Django项目的配置信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.加载数据库,数据库 ...

  9. java压缩文件详解_Java解压和压缩带密码的zip文件过程详解

    前言 JDK自带的ZIP操作接口(java.util.zip包,请参看文章末尾的博客链接)并不支持密码,甚至也不支持中文文件名. 为了解决ZIP压缩文件的密码问题,在网上搜索良久,终于找到了winzi ...

最新文章

  1. 机器学习(MACHINE LEARNING)交叉验证(简单交叉验证、k折交叉验证、留一法)
  2. 微服务架构可能不适合所有企业
  3. 从PM到GAN——LSTM之父Schmidhuber横跨22年的怨念(文字版)
  4. 验证二叉搜索树的golang实现
  5. Flutter尝鲜3——动画处理并行和串行
  6. python执行request请求
  7. CSS 相邻选择器(七)
  8. ZeroMQ接口函数之 :zmq_proxy – 开始ZMQ内置代理
  9. HTML转PDF字体的坑,搞了半天
  10. 计算机基础快捷键的使用
  11. android 3dtouch插件,标注点支持3DTouch效果
  12. 记录你生活的点滴,体会分享的快乐
  13. Unity打包报错 com.android.buil.gradle.internal.tasks.workers$ActionFacade
  14. 一份小白前端可视化学习指南——附思维导图
  15. android系统视频剪辑app推荐,知乎10w人收藏:玩短视频必装的9款剪辑App(最全)...
  16. 数控加工仿真系统 - FANUC OI 铣床编程笔记(下)
  17. 国际移动设备识别码IMEI
  18. ContentTypes
  19. jsp70150宠物寄领养系统
  20. veiw pad 7寸 android4.2,优派viewpad7刷机教程以及报价【图解】

热门文章

  1. 单源最短路 SPFA 算法模板
  2. docker mysql 不稳定_docker 的 mysql 容器运行一段时间后崩溃
  3. 鸿蒙手机系统开发大会,鸿蒙OS+EMUI10,华为开发者大会的创新与看点
  4. 2021.01.30 Visual QA论文阅读
  5. mysql一对多分类_mysql一对多结果归类
  6. bom event周期_前端知识点总结——BOM
  7. 无障碍开发(七)之实例讲解
  8. Python与Golang协程异同
  9. Ubantu中安装sublime
  10. HashMap和LinkedHashMap的比较使用