在实际开发中,常常需要把程序中的公用代码放到一个文件中,使用这些代码的文件只需要包含这个文件即可。这种方法有助于提高代码的重用性,给代码的编写与维护带来很大的便利。在PHP中, 有require、require_once、include、include- once四种方法包含一个文件。
我们来对比他们的不同:
函数 | 包含失败 | 特点 |
---|---|---|
Inlcude | 返回一条警告 | 文件继续向下执行。通常用于动态包含 |
Require | 一个致命的错 | 代码就不会继续向下执行。通常包含极为重要的文件,整个代码甭想执行 |
Include_once | 返回一条警告 | 除了原有include的功能以外,它还会做once检测,如果文件曾经已经被被包含过,不再包含 |
Require_once | 一个致命的错 | 除了原的功能一外,会做一次once检测,防止文件反复被包含 |
注意:
1,少用_once带once,因为它会消耗更多的资源去做检测的工作。
2,特高级
Include文件只需要编译一次,因为每次包含include都会再执行一次对应的代码,如何减少include再次执行时,需要重新解析的过程。
我们来做一几个实验:
1,include包含函数的功能。
创建一个functions.php文件,里面写上两个函数:
<?php //functions.php文件 function demo(){ echo 'aaaa'; } function test(){ echo 'cccdddd'; } ?>
在functions.php的同级目录下,我再创建一个user.php文件把functions.php文件包含进来。这样我的函数就可以专门放在functions.php里面,哪儿需要用到这些函数的时候,我就从哪儿包含进来:
<?php //user.php include 'functions.php'; //可以直接调用 demo(); test(); ?>
我通过过上例我们知道了include的功能。接下来我们对比include和require:
代码中,我们先用include 来包含不存在的test.php文件,
<?php //user.php include 'functions.php'; include 'test.php'; //可以直接调用 demo(); test(); ?>
再用require包含 不存在的test.php文件:
<?php //user.php include 'functions.php'; require 'test.php'; //可以直接调用 demo(); test(); ?>
通过上例的对比我们发现:
如果test.php文件不存在include 会发出警告继续执行demo()和test()函数。
而requre则直接报错,demo()和test()函数无法继续执行。
我们通过表格知道了:inlcude 和include_once的区别在于,检测是否重复包含。如果重复包含了include_once不会再包含 对应的文件了,而include 则不管这些。有没引入过文件,都再引入一次。
同样刚刚的user.php我们再实验一下,我们将functions.php包含两次,分别使用include和include_once:
<?php //user.php //这儿被包含了两次同样的函数定义文件哟 include 'functions.php'; include 'functions.php'; //可以直接调用 demo(); test(); ?>
改为include_once再试一次:
<?php
<?php //user.php //这儿被包含了两次同样的函数定义文件哟 include_once 'functions.php'; include_once 'functions.php'; //可以直接调用 demo(); test(); ?>
大家分别执行后会发现——include 这次引入functions.php两次的时候报了如下错误:
上图中的提示是说,不能重新定义函数demo()。
我们在函数定义章节讲过,函数不能定义两次,否则会报错。因为我们将 functions.php包含了两次所以执行了两次,因此报这个错误。
而include_once不报错的原因是因为:他检测了functions.php曾经包含过,不再进行包含引入了。
而require和require_once的功能,大家用你最最聪明的小脑袋是不是就能推理出来了呢?require_once有两个特点:
1.包含 的文件必须存在,否则停止执行
2.会做重复包含检查哟
下一节浮世绘梦3年前
引用其他同级文件中的函数 包含函数 include 引用文件存在,继续运行,不存在会警告Warning,继续执行代码 include_once 检测重复 require 引用文件存在,继续运行,不存在会致命报错Fatal error,不继续执行代码 require_once 检测重复
0
吒哪4年前
1.一个函数不能定义两次 include 'functions.php'; include 'functions.php'; 所以这样会报错 include 'functions.php'; include_once 'functions.php'; 这样不会报错 2. Inlcude 返回一条警告 文件继续向下执行。通常用于动态包含 Require 一个致命的错 代码就不会继续向下执行。通常包含极为重要的文件,整个代码甭想执行 Include_once 返回一条警告 除了原有include的功能以外,它还会做once检测,如果文件曾经已经被被包含过,不再包含 Require_once 一个致命的错 除了原的功能一外,会做一次once检测,防止文件反复被包含
0
ʘᴗʘ5年前
函数 包含失败 特点 Inlcude 返回一条警告 文件继续向下执行。通常用于动态包含 Require 一个致命的错 代码就不会继续向下执行。通常包含极为重要的文件,整个代码甭想执行 Include_once 返回一条警告 除了原有include的功能以外,它还会做once检测,如果文件曾经已经被被包含过,不再包含 Require_once 一个致命的错 除了原的功能一外,会做一次once检测,防止文件反复被包含
0
北海以北5年前
inlcude 和include_once的区别在于,检测是否重复包含。如果重复包含了include_once不会再包含 对应的文件了,而include 则不管这些。有没引入过文件,都再引入一次。
0
小赢一场5年前
1.include包含未知文件会发出警告,程序继续往下执行,require则会报错,程序不会继续往下执行 2.include与include_once区别在于检测是否重复包含,如果重复包含,include_once只包含一次,程序继续执行,include则会包含两次,程序报错
0
3期-Shawn5年前
在实际开发中,常常需要把程序中的公用代码放到一个文件中,使用这些代码的文件只需要包含这个文件即可。这种方法有助于提高代码的重用性,给代码的编写与维护带来很大的便利。在PHP中, 有require、require_once、include、include- once四种方法包含一个文件。 我们来对比他们的不同: 函数 包含失败 特点 Inlcude 返回一条警告 文件继续向下执行。通常用于动态包含 Require 一个致命的错 代码就不会继续向下执行。通常包含极为重要的文件,整个代码甭想执行 Include_once 返回一条警告 除了原有include的功能以外,它还会做once检测,如果文件曾经已经被被包含过,不再包含 Require_once 一个致命的错 除了原的功能一外,会做一次once检测,防止文件反复被包含 注意: 1,少用_once带once,因为它会消耗更多的资源去做检测的工作。
0
阿大5年前
Inlcude 返回一条警告 文件继续向下执行。通常用于动态包含 Require 一个致命的错 代码就不会继续向下执行。通常包含极为重要的文件,整个代码甭想执行 Include_once 返回一条警告 除了原有include的功能以外,它还会做once检测,如果文件曾经已经被被包含过,不再包含 Require_once 一个致命的错 除了原的功能一外,会做一次once检测,防止文件反复被包含
0
祈りの空6年前
函数 包含失败 特点 Inlcude 返回一条警告 文件继续向下执行。通常用于动态包含 Require 一个致命的错 代码就不会继续向下执行。通常包含极为重要的文件,整个代码甭想执行 Include_once 返回一条警告 除了原有include的功能以外,它还会做once检测,如果文件曾经已经被被包含过,不再包含 Require_once 一个致命的错 除了原的功能一外,会做一次once检测,防止文件反复被包含
0
博龙6年前
在PHP中,有require, require_one, include, include_once 四中方法包含一个文件 函数 包含失败 Include 返回一条警告文件继续向下执行,通常用于动态包含 Require 一个致命的错代码就不会继续想下执行。通常包含纪委重要的文件,整个代码甭想执行 include_once 返回一条警告除啦原有include功能外,他还会做once检测,如果文件曾经已经被包含过,不在包含 require_once 一个致命的错除了原有的功能外,会做一次once检测,防止文件反复被包含
<?php //include 'functions.php'; //include 与 require 区别: //include //include 'test.php'; //echo 'include,警告并继续往下执行<br>'; //require //require 'test.php'; //echo 'require,报错并不执行此行及以下代码'; //include 与 include_once 区别: //include //include 'functions.php'; //抱重复的错误 //include 'functions.php'; //include_once //include_once 'functions.php'; //不会报错,会继续执行 //include_once 'functions.php'; //因为已经包含了文件,另一个包含文件就不再包含 require_once 'functions.php'; require_once 'functions.php'; demo(); test(); ?>
0