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 相关文章推荐
浅析PHP绘图技术
Jul 03 PHP
php判断手机访问还是电脑访问示例分享
Jan 20 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
php图片的二进制转换实现方法
Dec 15 PHP
php批量删除cookie的简单实现方法
Jan 26 PHP
php实现的简单检验登陆类
Jun 18 PHP
PHP文件缓存smarty模板应用实例分析
Feb 26 PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 PHP
php PDO判断连接是否可用的实现方法
Apr 03 PHP
详谈phpAdmin修改密码后拒绝访问的问题
Apr 03 PHP
PHP实现统计代码行数小工具
Sep 19 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
Sep 13 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
escape unescape的php下的实现方法
2007/04/27 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
PHP7 新增常量
2021/03/09 PHP
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
Jquery中Event对象属性小结
2015/02/27 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
python中使用sys模板和logging模块获取行号和函数名的方法
2014/04/15 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
Python的math模块中的常用数学函数整理
2016/02/04 Python
tensorflow识别自己手写数字
2018/03/14 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
什么是Remote Module
2016/06/10 面试题
我们的节日国庆活动方案
2014/08/19 职场文书
工程部主管岗位职责
2015/02/12 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
小学美术教学反思
2016/02/17 职场文书
六年级作文之关于梦
2019/10/22 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python
Python中time标准库的使用教程
2022/04/13 Python