PHP文件包含详解

市面上很多PHP教材对文件包含的内容讲得都很简单,根本就没讲清楚。现将自己遇到的问题整理如下。
文件包含是模块化开发的重要方式。PHP中文件包含是通过四个函数实现的:include,require,include_once,require_once。
(1)文件包含的原理就是将被包含文件的代码复制到引用处。
(2)文件包含可以是本地文件也可以是远程文件,但两者根本不是一回事,通常我们说的都是本地文件包含。本地文件包含输入的是一个路径信息,远程文件包含传入的是一个URL。
(3)本地文件包含,要搞清楚是如何寻找被包含文件的,这个问题很重要。
    a.当传入的是相对路径或者绝对路径时,如./a.php,../a.php,c:/www/a.php,会直接根据这个路径去寻找被包含文件。
    b.当传入的只是一个文件名时,如a.php,b.php,首先会去include_path(PHP配置文件中可设置)所指定的路径下寻找被包含文件,如果找到了就停止;如果没有找到,会到当前文件所在目录下继续寻找。
(4)作用域
    当一个文件被包含时,其中所包含的代码继承了 include 所在行的变量范围。从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用。不过所有在包含文件中定义的函数和类都具有全局作用域。
(5)include与require的区别
    它们的区别仅仅在于对出错的处理方式不同,当文件包含出错时,include会产生警告,程序会继续执行;require会报告错误,程序终止执行。
(6)include与include_once的区别
    当出现多重引用时,一定要注意。例如a.php包含了b.php、c.php,b.php包含了c.php,这时如果在a.php中使用include来包含b.php、c.php,就会报重复定义的错误,而应该使用include_once来包含文件。include_once,同一文件只包含一次,如果某文件被包含过了,就不再被包含了。

还有不清楚地方请移步:http://php.net/manual/zh/function.include.php

注:如有不准确的地方,欢迎批评指正。

你可能感兴趣的:(PHP,PHP,文件包含,include,require)