include(),include_once(),require(),require_once()

include()

include()语句将在其被调用的位置处判断并包含一个文件。包含一个文件与在该语句所在位置复制该文件的数据居右相同的结果。其形式为:

include(/path/to/filename)

与print和echo语句一样,使用include()时可以忽略括号。例如,假设希望包含一系列预定义的函数和配置变量,可以将这些函数和配置变量放在单独的文件中(例如,名为init.php),然后在每个PHP脚本顶部包含这个文件,如下:

<?php
        include "/user/local/lib/php/wjgilmore/init.inc.php";
        /* the script continues here */
?>

还可以根据条件来执行include()语句。例如,假设一个include()语句放在if语句内,那么只有在if语句为真时才包含该文件。在条件语句中使用include()有个怪现象,它必须包围在语句块大括号中,或者用其他语句包围符括起。考虑下面两端代码中的语法不同。

第一个代码段是不正确的,因为它没有适当的块包围符。

<?php
        if(expression)
                include ('filename');
        else
                include ('another_filename');
?>

第二个代码段是正确的用法,在此将include()语句包围在打括号中:

<?php
        if(expression){
                include ('filename');
        }else{
                include ('another_filename');
        }
?>

关于include()语句有个误解,以为由于所包含的代码会嵌入在php执行块中,所以不需要php转义标记。但是事实并非如此;必须始终使用定界符。因此,不要指望只是将php命令放在一个文件中就能得到正确的解析,如下:

echo "this is an invalid include file";

世界上,任何php语句都必须使用正确的转义标记包围,如下:

<?php
        echo "this is an invalid include file";
?>

所包含文件中的所有代码都会集成其调用者位置处的变量作用域。

include()语句还能包含位于远程服务器的文件。如果文件所在的服务器支持php,通过传递必要的键值对,可以像GET请求那样解析所包含文件中的变量,如下:

include "http://www.wjgilmore.com/index.html?background=blue";

包含远程文件时必须满足两个条件。

首先,allow_url_fopen配置指令必须启动。

其次,必须支持URL包装器。

include_once() // 确保文件只包含一次

include_once() 函数的作用与include()相同,不过它会首先验证是否已经包含了该文件。其形式如下:

include_once(filename)

include_once() 与include()一样必须包围在语句大打括号中

require() //请求文件

requirt()在很大程度上与include()相同,都是将一个模板文件包含到require()调用所在的位置。其形式如下:

require(filename)

require() 和include()之间有两点重要的区别。

首先,无论require()的位置如何,指定文件都将包含到出现require()的脚本中。例如,即使require()放在计算为假的if语句中,依然会包含指定文件。

只用启用allow_url_fopen时(这是默认值),才可以在require()中使用URL。

第二个重要的区别是:require()出错时,脚本将停止执行,而在使用include()的情况下,脚本将继续执行。一种可能的错误是require()语句不正确的引用了目标路径。

require_once() //确保文件只请求一次

require_once(filename)

require_once()函数确保文件只包含一次。在遇到require_once()后,后面再试图包含相同的文件时都将被忽略。

除了require_once()的验证过程外,其他方面都与require()相同。

posted @ 2012-07-05 15:08  cindylu520  阅读(343)  评论(0编辑  收藏  举报