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数据库密码的找回的步骤
Jan 12 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
Apr 25 PHP
PHP stripos()函数及注意事项的分析
Jun 08 PHP
PHP中source #N问题的解决方法
Jan 27 PHP
thinkphp控制器调度使用示例
Feb 24 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
PHP命名空间(Namespace)简明教程
Jun 11 PHP
php实现图片上传时添加文字和图片水印技巧
Apr 18 PHP
php实现微信扫码自动登陆与注册功能
Sep 22 PHP
关于PHP通用返回值设置方法
Mar 31 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
PHP实现页面静态化深入讲解
Mar 04 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
php 生成唯一id的几种解决方法
2013/03/08 PHP
php实现微信发红包功能
2018/07/13 PHP
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
浅谈基于Vue.js的移动组件库cube-ui
2017/12/20 Javascript
使用axios实现上传图片进度条功能
2017/12/21 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
JS中数据结构之栈
2019/01/01 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
python解析xml文件实例分享
2013/12/04 Python
Python虚拟环境项目实例
2017/11/20 Python
简单谈谈python中的lambda表达式
2018/01/19 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
C#中有没有静态构造函数,如果有是做什么用的?
2016/06/04 面试题
高分子材料个人求职信范文
2013/09/25 职场文书
规划编制实施方案
2014/03/15 职场文书
合作协议书范本
2014/04/17 职场文书
无毒社区工作方案
2014/05/23 职场文书
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers