包含语句

.4.1 include语句

include语句包含并运行指定文件。被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名),就按照include_path(在配置文件中可查看include_path)指定的目录寻找。如果在include_path下没找到该文件,那么include最后会在调用脚本文件所在的目录和当前工作目录下寻找。如果最后仍未找到文件,include结构就会发出一条警告,例如:


  include 'a.php';

  echo "111";

  ?>

上述示例中,若PHP找不到a.php文件,则会发出一条警告,但后面的语句还会继续执行。以上代码的执行结果在浏览器中的输出如下:

  Warning:include(a.php):failed to open stream:No such file or directory in /Library/WebServer/Documents/book/str.php on line 280

  Warning:include():Failed opening 'a.php' for inclusion (include_path='.:') in /Library/WebServer/Documents/book/str.php on line 280

  111

我们在a.php里编写代码:


  $color = 'green';

  ?>

在test.php中编写代码:


include 'a.php';

  echo $color;

  ?>

a.php和test.php在同一个文件夹里。运行test.php,打印结果为:

  green

当一个文件被包含时,其中所包含的代码继承了include所在行的变量范围。从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用。不过所有在包含文件中定义的函数和类都具有全局作用域。如果include出现于调用文件中的一个函数里,那么被调用的文件中所包含的所有代码将表现得如同它们是在该函数内部定义的一样。所以它将遵循该函数的变量范围。此规则的一个例外是魔术常量,它们是在发生包含之前就已被解析器处理的。a.php中的代码:


  $color = 'green';

  echo __LINE__."
";

  ?>

test.php中的代码:


  include 'a.php';

  echo $color."
";

  aa();

  function aa(){

    global $color;

    echo $color;

  }

  ?>

运行test.php文件,结果如下:

  3

  green

  green

3.4.2 include_once语句

include_once语句和include语句类似,唯一的区别就是该文件如果已经被包含,就不会再次包含。include_once可以用于在脚本执行期间同一个文件有可能被包含超过一次的情况下确保它只被包含一次,以避免函数重定义、变量重新赋值等问题。

例如,a.php中的代码:


  echo 1;

  echo 2;

  ?>

test.php中的代码:


  include 'a.php';

  include 'a.php';

  ?>

运行test.php,打印结果为:

  1212

如果test.php中的代码为:


  include_once 'a.php';

  include_once 'a.php';

  ?>

那么运行test.php的结果为:

  12

3.4.3 require语句

require语句和include语句几乎完全一样,不同的是当被包含文件不存在时,require语句会发出一个Fatal error错误且程序终止执行,include则会发出一个Warining警告但会接着向下执行。

例如,有如下test.php代码:


  require 'b.php';

  echo 1;

  ?>

如果PHP没有找到b.php文件,就会发出一个错误。代码执行结果如下:

  Warning:require(b.php):failed to open stream:No such file or directory in /Library/WebServer/Documents/book/str.php on line 280

  Fatal error:require():Failed opening required 'b.php' (include_path='.:') in /Library/WebServer/Documents/book/str.php on line 280

如果test.php中将require换成include包含b.php,执行结果则会是:

  Warning:include(b.php):failed to open stream:No such file or directory in /Library/WebServer/Documents/book/str.php on line 280

  Warning:include():Failed opening 'b.php' for inclusion (include_path='.:') in /Library/WebServer/Documents/book/str.php on line 280

  1

使用include包含的文件不存在,发出一个警告,但程序会继续执行,所以显示出了1。

3.4.4 require_once语句

require_once语句和require语句完全相同,唯一的区别是PHP会检查该文件是否已经被包含过,如果是就不会再次包含。此处不再举例说明。

欢迎关注微信公众号“PHP基础入门教程”,谢谢支持!

你可能感兴趣的:(包含语句)