zoukankan      html  css  js  c++  java
  • php中include()和require()的区别

    1.引用文件方式

        对 include()来说,在include()执行时文件每次都要进行读取和评估;而对于require()来说,文件只处理一次(实际上,文件内容替换 了require()语句。这就意味着如果有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高。另一方面,如果每次执行代码时读取不同的文件,或者有通过一组文件叠代的循环,就使用include(),因为可以给想要包括的文件名设置一个变量。

    2.是否有条件引用

        在PHP变成中,include()与require()的功能相同,但在用法上却有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。例如在下面的一个例子中,如果变量$somgthing为真,则将包含文件somefile:

    1 if($something){ 2 include("somefile"); 3 }

    但不管$something取何值,下面的代码将把文件somefile包含进文件里:

    1 if($something){ 2 require("somefile"); 3 }

    下面的这个有趣的例子充分说明了这两个函数之间的不同。

    1 $i = 1; 2 while ($i < 3) { 3 require("somefile.$i"); 4 $i++; 5 }

    在这段代码中,每一次循环的时候,程序都将把同一个文件包含进去。很显然这不是程序员的初衷,从代码中我们可以看出这段代码希望在每次循环时,将不同的文件包含进来。如果要完成这个功能,必须求助函数include():

    1 $i = 1; 2 while ($i < 3) { 3 include("somefile.$i"); 4 $i++; 5 }

    3.报错

        用例子来说话,写两个php文件,名字为test1.php  和test2.php,注意相同的目录中,不要存在一个名字是test999.php的文件。

     
    test.php <?PHP include (”test999.php”); echo “abc”; ?> test2.php <?PHP require(”test999.php”) echo “abc”; ?>
     

    浏览第一个文件,因为没有找到test999.php文件,我们看到了报错信息,同时,报错信息的下边显示了abc,你看到的可能是类似下边的情况:
    Warning: include(test1aaa.php) [function.include]: failed to open stream: No such file or directory in D:WebSite est.php on line 2

    Warning: include() [function.include]: Failed opening ‘test1aaa.php’ for inclusion (include_path=’.;C:php5pear’) in D:WebSite est.php on line 2
    abc

    浏览第二个文件,因为没有找到test999.php文件,我们看到了报错信息,但是,报错信息的下边没有显示abc,你看到的可能是类似下边的情况:
    Warning: require(test1aaa.php) [function.require]: failed to open stream: No such file or directory in D:WebSite est.php on line 2

    Fatal error: require() [function.require]: Failed opening required ‘test1aaa.php’ (include_path=’.;C:php5pear’) in D:WebSite est.php on line 2

    现在就能很清楚的知道include和require的区别:include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码,require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。

  • 相关阅读:
    POJ 1659 Frogs' Neighborhood
    zoj 2913 Bus Pass(BFS)
    ZOJ 1008 Gnome Tetravex(DFS)
    POJ 1562 Oil Deposits (DFS)
    zoj 2165 Red and Black (DFs)poj 1979
    hdu 3954 Level up
    sgu 249 Matrix
    hdu 4417 Super Mario
    SPOJ (BNUOJ) LCM Sum
    hdu 2665 Kth number 划分树
  • 原文地址:https://www.cnblogs.com/wangzehuaw/p/6144764.html
Copyright © 2011-2022 走看看