include与include_once和require与require_once

require_once和include_once:
include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码
require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码
用例子来说话,写两个php文件,名字为test-include.php 和test-require.php,
注意相同的目录中,不要存在一个名字是test-nothing.php的文件。
test-include.php
< ?php
include 'test-nothing.php';
echo 'abc';
?>
test-require.php
< ?php
require 'test-nothing.php';
echo 'abc';
?>
浏览http://localhost/test-include.php,因为没有找到test-nothing.php文件,
我们看到了报错信息,同时,报错信息的下边显示了abc,你看到的可能是类似下边的情况:
Warning: include(test-nothing.php) [function.include]: failed to open stream: No such file or directory in D:wwwtest-include.php on line 2
Warning: include() [function.include]: Failed opening 'test-nothing.php' for inclusion (include_path='.;C:php5pear') in D:wwwtest-include.php on line 2
abc
浏览http://localhost/test-require.php,因为没有找到test-nothing.php文件,我们看到了报错信息,
但是,报错信息的下边没有显示abc,你看到的可能是类似下边的情况:
Warning: require(test-nothing.php) [function.require]: failed to open stream: No such file or directory in D:wwwtest-require.php on line 2
Fatal error: require() [function.require]: Failed opening required 'test-nothing' (include_path='.;C:php5pear') in D:wwwtest-require.php on line 2
2.条件引用
include()与require()的功能相同,用法上却有一些不同,include()是有条件包含函数,而require()则是无条件包含函数,
例如下面例子,如果变量$somg为真,则将包含文件somefile.php:
if($some){
include 'somefile.php';
}
但无论$some取何值,下面的代码将把文件somefile.php包含进文件里:
if($something){
require 'somefile.php';
}
下面的例子充分说明了这两个函数之间的不同
$i = 1;
while ($i < 3) {
require "somefile.$i.php";
$i++;
}
可以从以上这段代码中看出,每一次循环的时候,程序都将把同一个文件包含进去,
很显然这不我们想要的,可以看出这段代码希望在每次循环时,
将不同的文件包含进来,如果要完成这个功能,只能使用函数include()
$i = 1;
while ($i < 3) {
include "somefile.$i.php";
$i++;
}
3.文件引用方式
include()执行时需要引用的文件每次都要进行读取和评估,
require()执行时需要引用的文件只处理一次(实际上执行时需要引用的文件内容替换了require()语句)
可以看出若有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高,
若每次执行代码时相读取不同的文件或者有通过一组文件叠代的循环,就使用include(),
可以给想要包括的文件名设置变量,当参数为 include()时使用这个变量

  1. require_once()和include_once()是 PHP 4.0.1pl2 中新加入的.(为了兼容肯定不能把include()和require()一下子就抛弃)2.require_once()和include_once()需要额外的去查看系统是否已经调用过这个文件. 因为它们在一个opcode缓存下的调用非常慢.所以效率上比其它两个函数要差一些.(据说php5.2.*以后效率问题被解决)3.php说不定以后就会把include()实现成include_once()的"名字连接",象implode()和join(),exit()和die()一样...(这个是我瞎猜的....) 你说的内容是正确的:require_once 已经导入的话就不再重复导入,而require如果已经导入的话可能会引发错误,只是require_once在php4.03以前的版本中是不存在的,而且效率上要比而require相对来说低一些,如果你对程序比较熟悉,完全可以使用require,而不用考虑require_once参考资料http://www.isstudy.com
赞(0) 打赏
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

    暂无评论...