第二十一课:文件引用
在程序编写中,往往有很些共同的东西要被很多程序引用。比如数据库连接的账号,程序定义的常量,网页头部的导航栏和网页尾部的版权声明等等。我们可以把这些共用的东西单独写在一个文件里面,然后在需要的地方用 require()语句或 include()语句包含进来。显而易见,在程序中引用文件可以大大提高程序开发速度,并可以降低程序的难度,更利于程序修改。 例如21-1:有两个文件 test1.php和 test2.php存放在同一个目录下 test1.php <? php $Color = ' #3333FF ' ; $bgColor1 = ' #DBE7F9 ' ; $bgColor2 = ' #f7fbf1 ' ; $str = ' 把鼠标放上来看看效果... ' ; ?> test2.php <? php require ( ' test1.php ' ); // 将文件test1.php包含进来 echo " <table width=300 height=200 border=1> " ; echo " <tr οnmοuseοver="this.style.backgroundColor='$bgColor1'" οnmοuseοut="this.style.backgroundColor='$bgColor2'"> " ; echo " <td><font color=$Color>$str</font></td> " ; echo " </tr></table> " ; ?> 从上面的例子我们可以看到:test2.php中使用require()语句将文件test1.php包含进来后,test1.php中定义的变量在test2.php中生效。实际上test1.php被包含进来后是作为test2.php的一部分运行。 如果你的test1.php放在其它目录下,比如当前目录的inc文件夹中,那么要用require('inc/test1.php')来引用文件,否则会出现找不到文件的错误。 include()语句也和require()语句一样可以引用文件,但两者有一些别:require()不管在程序的哪一部分使用,只要程序一引用,被引用的文件就会作为主程序的一部分来运行,如果在一个条件控制语句中使用,哪怕条件为假,文件也会被包含进来。而include()语句只有执行到这条语句时,所引用的文件才会被包含到主程序中来。这就意味着,在条件判定语句中使用include()完全可以按照编程者的意愿来工作。 另外,如果发生包含错误,require()会给出错误信息后终止程序执行,而include()只是给出错误信息,并继续执行下去。 因为include()是一个特殊的语言结构,如果它在一个条件语句中,必须在一个语法块中封它。例如21-2: <? php // 错误,不会象希望的那样工作 if ( $condition ) include ( $file ); else include ( $other ); // 下面的正确 if ( $condition ){ include ( $file );} else { include ( $other );} ?> require_once()语句和include_once()语句 require_once()语句在脚本执行期间包含并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包含了,则不会再次包含。 应该用于在脚本执行期间同一个文件有可能被包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。 include_once() 语句在脚本执行期间包含并运行指定文件。此行为和 include() 语句类似,唯一区别是如果该文件中的代码已经被包含了,则不会再次包含。如同此语句名字暗示的那样,只会包含一次。应该用于在脚本执行期间同一个文件有可能被包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。