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实现像JSP,ASP里Application那样的全局变量
Jan 12 PHP
彻底杜绝PHP的session cookie错误
Aug 09 PHP
php 应用程序安全防范技术研究
Sep 25 PHP
php 魔术函数使用说明
Feb 21 PHP
Thinkphp中的volist标签用法简介
Jun 18 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
Jun 26 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
php操作mongoDB实例分析
Dec 29 PHP
PHP程序中使用adodb连接不同数据库的代码实例
Dec 19 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
Oct 18 PHP
php使用include 和require引入文件的区别
Feb 16 PHP
PHP常见过waf webshell以及最简单的检测方法
May 21 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
第十一节--重载
2006/11/16 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
EasyUI中datagrid在ie下reload失败解决方案
2015/03/09 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
vue 循环加载数据并获取第一条记录的方法
2018/09/26 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
Djang中静态文件配置方法
2015/07/30 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
基于python实现删除指定文件类型
2020/07/21 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
大学生如何写自荐信
2014/01/08 职场文书
小溪流的歌教学反思
2014/02/13 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
实习介绍信模板
2015/01/30 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
2015年采购工作总结
2015/04/10 职场文书