PHP之PHP文件引用详解
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社区!
来源: 重庆PHP http://www.php-chongqing.com
原文地址: http://www.php-chongqing.com/index.php/article/15
PHP之PHP文件引用详解的更多相关文章
- 史上最全的maven pom.xml文件教程详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 【Linux学习】Linux下用户组、文件权限详解
原文地址:http://www.cnblogs.com/123-/p/4189072.html Linux下用户组.文件权限详解 用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在li ...
- php中关于引用(&)详解
php中关于引用(&)详解 php的引用(就是在变量或者函数.对象等前面加上&符号) 在PHP 中引用的意思是:不同的变量名访问同一个变量内容. 与C语言中的指针是有差别的.C语言中的 ...
- Uploadify 上传文件插件详解
Uploadify 上传文件插件详解 Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中 ...
- C++文件读写详解(ofstream,ifstream,fstream)
C++文件读写详解(ofstream,ifstream,fstream) 这里主要是讨论fstream的内容: #include <fstream> ofstream //文件写操作 内存 ...
- C++引用(&)详解
C++引用详解 引用的概念 引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样. 引用的声明方法:类型标识符 &引用名=目标变量名: 如下:定义引用ra,它是变量a的引 ...
- C++11 左值、右值、右值引用详解
C++11 左值.右值.右值引用详解 左值.右值 在C++11中所有的值必属于左值.右值两者之一,右值又可以细分为纯右值.将亡值. 在C++11中可以取地址的.有名字的就是左值,反之,不能取地址的.没 ...
- 转载 Spring、Spring MVC、MyBatis整合文件配置详解
Spring.Spring MVC.MyBatis整合文件配置详解 使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...
- http头文件User-Agent详解【转载】
原文地址:http://blog.csdn.net/andybbc/article/details/50587359 http头文件User-Agent详解 什么是User-Agent User-Ag ...
随机推荐
- 解决ARC下performselector-may-cause-a-leak-because-its-selector-is-unknown 警告
在ARC下使用 [theTarget performSelector:theTarget withObject:Nil]; 会出现警告:performselector-may-cause-a-leak ...
- HTML5 本地存储形式
1.sessionStorage 2.localStorage 3.Database Storage 4.globalStorage 5.兼容性 参考文献 本地持久化存储一直是本地客户端程序优于 we ...
- 【PM】关于系统数据库和服务现场升级的一些看法
工作快满一年了,立即着手准备第二次出差去升级我们的系统,可是突然想到一件事情,让我颇有感触,是关于系统现场升级的. 我们迭代开发的系统隔一段时间就会须要到用户的现场去为其进行系统升级,当中升级包含cl ...
- sqlserver2008 R2中查找未使用过的索引
转自:http://blog.csdn.net/yangzhawen/article/details/7247393 sqlserver2008 R2中查找未使用过的索引: o.name AS 表名 ...
- bzoj-1492 货币兑换Cash (2)——CDQ分治
题意: 略 见上一篇 题解: 方程还是那个方程f[i]=A[i] * X[j] + B[i] * Y[j]. 化简为Y[i]=(-A[i]/B[i]) * X[i] + f[i]/B[i]这一坨: 既 ...
- [hdu 4959]Poor Akagi 数论(卢卡斯数,二次域运算,等比数列求和)
Poor Akagi Time Limit: 30000/15000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- Linux命令-文件处理命令:touch
touch chengshi.list 在当前目录中创建chengshi.list文件 touch /root/chengshi.list 在root目录下面创建chengshi.list文件 tou ...
- log4cpp基础测试
// log4cplus.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h" #include <iostream>#include ...
- sql中一列拆成两列
declare @table table (name nvarchar(4))insert into @tableselect '张三' union allselect '李四' union alls ...
- machine_learning-knn算法具体解释(近邻算法)
近邻算法是机器学习算法中的入门算法,该算法用于针对已有数据集对未知数据进行分类. 该算法核心思想是通过计算预測数据与已有数据的相似度猜測结果. 举例: 如果有例如以下一组数据(在下面我们统一把该数据作 ...