将文件A包括在文件B中,反之亦然


Including file A in file B, vs. vice-versa

"includer"answers"includee"在变量和函数作用域上有什么区别?

例如,这两个测试的工作原理相同,但是否存在我应该了解的范围界定细节?

测试1:

文件"one.php":

<?php 
$a = 5;
include("two.php");
?>

文件"two.php:

<?php
function f($x) { return $x * 2; }
echo f($a);
?>

测试2:

文件"one.php":

<?php 
$a = 5;
?>

文件"two.php:

<?php
include("one.php");
function f($x) { return $x * 2; }
echo f($a);
?>

当您执行一个PHP文件时,它在全局范围内启动。包括文件状态;

当包含文件时,它包含的代码将继承变量发生include的行的范围。任何可用变量调用文件中的那一行将在被调用的文件,从那时起。但是,所有函数和类包含文件中定义的具有全局作用域

由于当您包含第二个文件时,您在这两种情况下都处于全局范围内,因此变量范围将保持全局,而包含的所有其他文件都将始终具有全局范围。换言之,两个文件和两种情况下的所有内容最终都在全局范围内,并且两者在范围界定上没有区别。

当您包含一个文件时,您可以将其视为单个文件,即:

将1作为单个文件进行测试:

<?php 
  // execute commands in this file
  $a = 5;
  
  // then continue execution of include("two.php");
  function f($x) { return $x * 2; }
  echo f($a);
?>

将测试2作为单个文件:

<?php 
  // first include include("one.php");
  $a = 5;
  
  // then continue execution of two.php
  function f($x) { return $x * 2; }
  echo f($a);
?>

希望你能理解两者之间的区别。本质上,它类似于复制然后粘贴include文件中包含的命令。

变量和函数的作用域就好像是同一个文件,只要包含的文件在";包括";