php使用include 和require引入文件的区别


Posted in PHP onFebruary 16, 2017

最近有小伙伴,提问了有关于require_once的有关问题,对于程序中遇到的问题,无聊难度大小,只要bug存在就还值得我们去探索,去解决。针对这个问题,我把include和require的详细用法进行归纳。(结合查阅资料和自己的理解,整合出来的)希望能给有需要的小伙伴一点帮助。

引入文件:

首先需要一个php文件:

<?php
class shao//类名必须和文件名相同!!!
{
  public $xxx="666";
}
$shili = new shao();
echo $shili->xxx;
?>

引用:

<?php
//引入文件
include "shao.php";//引用文件;只能引用一遍
//引用多个则费劲
//include_once("shao.php");//一次又一次
//也可以require ("shao.php");
?>

其中include与require的区别:

require:

执行到require()时,只会读取一次档案,故常放在程序开头,档案引入后PHP会将网页档重新编译,让引入档成为原先网页的一部分。

require() :无条件包含,如果文件不存在,会报出一个fatal error.脚本停止执行
require遇到错误时,直接报错并停止运行程序

include:

执行到include()时,每次皆会读取档案,故常用于流程控制的区段,如条件判断或循环中。
include() : 有条件包含,如果文件不存在,会给出一个 warning,但脚本会继续执行
include遇到错误时(引用的文件不存在),PHP只是报错,但程序会继续运行下去

 以下为补充:

1. include有返回值,而require没有。
2. include()包括并运行指定文件 在处理失败时include() 产生一个警告,被导入的程序代码都会被执行,而且这些程序在执行的时候会拥有和源文件中呼叫到include()语句的位置相同的变量范围。你可以导入同一个服务器中的静态页面。
3. include_once()的作用和include()是几乎相同的 唯一的差别在于include_once()会先检查要导入的档案是不是已经在该程序中的其它地方被导入过了,如果有的话就不会再次重复导入(这项功能有时候是很重要的,比方说要导入的里面宣告了一些你自行定义好的函数,那么如果在同一个程序重复导入这个文件,在第二次导入的时候便会发生错误讯息,因为PHP不允许相同名称的函数被重复宣告第二次)。
4. require()会将目标文件的内容读入,并且把自己本身代换成这些读入的内容 在处理失败时require() 则导致一个致命错。 这个读入并且代换的动作是在PHP引擎编译你的程序代码的时候发生的,而不是发生在PHP引擎开始执行编译好的程序代码的时候(PHP 3.0引擎的工作方式是编译一行执行一行,但是到了PHP 4.0以后就有所改变了,PHP 4.0是先把整个程序代码全部编译完成后,再将这些编译好的程序代码一次执行完毕,在编译的过程中不会执行任何程序代码)。require()通常来导入静态的内容,而include()则适合用导入动态的程序代码。
5. 如同include_once(),require_once()会先检查目标文件的内容是不是在之前就已经导入过了,如果是的话,便不会再次重复导入同样的内容。
6. require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require。
7. require通常放在PHP程序的最前面,PHP程序在执行前,就会先读入require所指定引入的文件,使它变成PHP程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
8. include一般是放在流程控制的处理部分中PHP程序网页在读到include的文件时,才将它读进来。这种方式可以把程序执行时的流程简单化。

推荐使用require_once()和include_once(),可以检测文件是否有重复包含。

自动加载:

被引用的php文件:

<?php
class shao//类名必须和文件名相同!!!
{
  public $xxx="666";
}

?>

自动加载:

<?php
function __autoload($asd)
{
  require $asd.".php";//可填地址查找
}
$shili = new shao();
echo $shili->xxx;
?>
PHP 相关文章推荐
也谈截取首页新闻 - 范例
Oct 09 PHP
PR值查询 | PageRank 查询
Dec 20 PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
May 26 PHP
PHP中SESSION使用中的一点经验总结
Mar 30 PHP
在windows服务器开启php的gd库phpinfo中未发现
Jan 13 PHP
跟我学Laravel之安装Laravel
Oct 15 PHP
PHP实现的简易版图片相似度比较
Jan 07 PHP
php根据日期或时间戳获取星座信息和生肖等信息
Oct 20 PHP
PHP缓冲区用法总结
Feb 14 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
PHP中单例模式与工厂模式详解
Feb 17 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 PHP
Yii2实现UploadedFile上传文件示例
Feb 15 #PHP
使用PHPMailer发送邮件实例
Feb 15 #PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
Feb 15 #PHP
php使用GD2绘制几何图形示例
Feb 15 #PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 #PHP
php使用Jpgraph创建折线图效果示例
Feb 15 #PHP
php使用Jpgraph创建3D饼形图效果示例
Feb 15 #PHP
You might like
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
2016/09/22 PHP
jQuery父级以及同级元素查找介绍
2013/09/04 Javascript
js防止表单重复提交的两种方法
2013/09/30 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
javascript的几种写法总结
2016/09/30 Javascript
canvas实现钟表效果
2017/02/13 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
JS数组去重的6种方法完整实例
2018/12/08 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
Python使用Mechanize模块编写爬虫的要点解析
2016/03/31 Python
python中PIL安装简单教程
2016/04/21 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
python matplotlib画图实例代码分享
2017/12/27 Python
Python爬虫文件下载图文教程
2018/12/23 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
python logging模块的使用总结
2019/07/09 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
使用Django清空数据库并重新生成
2020/04/03 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
html5的localstorage详解
2017/05/09 HTML / CSS
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
乡镇干部十八大感言
2014/02/17 职场文书
竞选班委演讲稿
2014/04/28 职场文书
企业安全标语
2014/06/07 职场文书
2014大学生批评与自我批评思想汇报
2014/09/21 职场文书
英文慰问信
2015/02/14 职场文书