+ -
当前位置:首页 → 问答吧 → 包含文件你用哪一种?

包含文件你用哪一种?

时间:2008-06-13

来源:互联网



简要说明一下:
1、require:无条件包含,也就是在 if(0) { require('file.php'); } 情况下也会把文件包含进来。
2、require_once:同上,但已包含过一次的文件,不再包含进来。
3、include:有条件包含,if(0) { include('file.php'); } 情况下不包含文件进来。但同一文件包含两次的情况下均包含进来。容易引起类同名错误。
4、include_once:同上,同一个文件多次包含及包含一次。
5、set_include_path:设定包含路径,一次搞定多个文件的包含。需配合get_include_path和上面四个函数来使用。依在下愚见,包含文件用这个应该是最高效的。


后记:有资料显示PHP对于include和require的机制已作调整,PHP5的require也不再是无条件包含,所以此投票发起者显然考虑不足。有误导之嫌。这里七月十五向大家致歉,让大家糊涂了。
推荐大家在包含文件时使用set_include_path结合require_once来完成,当然效率还是值得研究了。
PHP中同一功能不同函数实现的情况很多,考虑到兼容性、效率等因素,大家在实际应用时要合理取舍。

作者: 七月十五   发布时间: 2008-06-13

3、include:有条件包含,if(0) { include('file.php'); } 情况下不包含文件进来。但同一文件包含两次的情况下均包含进来。容易引起类同名错误。

这叫什么意思???    我如果在外转引入一次...再判断的时候?? 就不管是真是假??都会引入???

作者: 冯.于安   发布时间: 2008-06-13

once效率相对低
set_include_path 好像不能在安全模式下用

偶用require

作者: 飞翔de希望   发布时间: 2008-06-13

我觉得虽然once效率略低,但会使程序更健壮

作者: linvo   发布时间: 2008-06-14

这不很明显吗。肯定是因情况而定啊

作者: 125231896   发布时间: 2008-06-14

不清楚PHP搞这么包含来做什么,实际应该中,我们应该用最后两种。
include_once的原理是:如果没有被包含过则包含。
include的原理是:不管之前有没有被包含,直接包含进来。

这就是所谓的效率,因为once有一个if判断。而对我们来说同样的文件在同一个会话中包含了两次或更多是不可容忍的。

set_include_path方法严格来说不能说是包含文件,而是为包含文件指名了路径,免去判断路径之苦。

实际使用时,我个人认为应该用include_once。

以上一家之言,姑妄听之

作者: 七月十五   发布时间: 2008-06-14

15 说说  set_include_path的用法
例如有有一个 include文件夹
下面有1.php  2.php  3.php
我在index.php 需要引用这3个文件
之前我都是用 require_once

能说说 如果用set_include_path
怎么做 效果才能和之前的一样吗……

作者: szgekko   发布时间: 2008-06-14

1.  require  
一直用require 也推荐用1.  require

作者: CrossMaya   发布时间: 2008-06-14

once在最新版的php里效率已经不低了...郁闷.为什么现在还有人说效率低呢...


LZ的简要说明,已经说出了这些东西该怎么用了...综合着用.要不然为什么要有这么多让你选择

[ 本帖最后由 mayongzhan 于 2008-6-14 18:09 编辑 ]

作者: mayongzhan   发布时间: 2008-06-14

tukiz10

作者: horizon   发布时间: 2008-06-14


//ZF路径设定
set_include_path(get_include_path().PATH_SEPARATOR
                 .'.'.PATH_SEPARATOR
                 .'../library'.PATH_SEPARATOR
                 .'../application/models');  //包含路径设定
include 'Zend/Loader.php';  //加载loader

这样设定后在当前目录(.)、../library、../application/models目录下的脚本,只要直接include_once ''文件名" 就可以了。
比如上例的Zend/Loader.php脚本就在../library下

作者: 七月十五   发布时间: 2008-06-15

我选用include

作者: luckhellen   发布时间: 2008-06-15

包含基础类的时候用require_once
include很少用

作者: sara   发布时间: 2008-07-31

用include系列,最多的是include,可以通过代码来控制只包含一次,所以很少用include_once

作者: fhjr999   发布时间: 2008-07-31

原帖由 于安 于 2008-6-13 23:03 发表
3、include:有条件包含,if(0) { include('file.php'); } 情况下不包含文件进来。但同一文件包含两次的情况下均包含进来。容易引起类同名错误。

这叫什么意思???    我如果在外转引入一次...再判断的时候?? 就不 ...

用require会这样的,虽然这个地方根本执行不到,但是还是会包含进来,所以会浪费更多的资源。

作者: fhjr999   发布时间: 2008-07-31

条件里面当然用include

作者: sara   发布时间: 2008-07-31

只选
include_once

作者: phplz   发布时间: 2008-07-31

从效率考虑
1.  require  和 include           运行速度是一样的
2.  require_once  和 include_once         运行速度是一样的

前组比后组速度要快,非必要时候后组不要使用

作者: skey   发布时间: 2008-08-01

set_include_path  还是改为 ini_set 好些

作者: skey   发布时间: 2008-08-01

看需要來決定...但大多數使用include

作者: hklcf   发布时间: 2008-08-01


echo file_get_contents($file_name);

作者: cers   发布时间: 2008-08-01

手册上的
注意: 在 PHP 4.0.2 之前适用以下规则:require() 总是会尝试读取目标文件,即使它所在的行根本就不会执行。条件语句不会影响 require()。不过如果 require() 所在的行没有执行,则目标文件中的代码也不会执行。同样,循环结构也不影响 require() 的行为。尽管目标文件中包含的代码仍然是循环的主体,但 require() 本身只会运行一次。


不是说在 PHP 4.0.2 之前吗 ?

下面的才是根本的区别吧
require() 和 include() 除了怎样处理失败之外在各方面都完全一样。include() 产生一个警告而 require() 则导致一个致命错误。换句话说,如果想在丢失文件时停止处理页面,那就别犹豫了,用 require() 吧。include() 就不是这样,脚本会继续运行。同时也要确认设置了合适的include_path。

[ 本帖最后由 mosee 于 2008-8-1 14:07 编辑 ]

作者: mosee   发布时间: 2008-08-01

我 用 require

作者: 汉化天空   发布时间: 2008-08-01

我们大大说:PHP给你设计两个函数肯定是有道理的!.....看情况而定了!.....

作者: lmhllr   发布时间: 2008-08-01

还有个__autoload

作者: leric   发布时间: 2008-08-05

用require_once
不知道php为啥用这么多的包含方式,直接include不就得了

作者: fly1983   发布时间: 2008-08-05

用include_once...
看了楼上N位的发言……
好感慨= =|||

作者: Fluorine   发布时间: 2008-08-05

requiere_once()比较耗资源;

作者: fireseno   发布时间: 2008-12-05

各有各的用处

[ 本帖最后由 Duron 于 2008-12-5 20:32 编辑 ]

作者: Duron   发布时间: 2008-12-05

requiere_once()貌似是最慢的,为什么DZ还用requiere_once():funk:

作者: 彪形大汉   发布时间: 2008-12-05