“包容者”和“包容者”在变量和功能范围界定方面有什么不同?
例如,这两个测试的工作原理是相同的,但是是否有我应该知道的范围的微妙之处呢?
试验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);
?>发布于 2012-02-20 18:52:57
执行PHP文件时,它从全局范围开始。包括文件说明;
当包含一个文件时,它包含的代码继承了包含发生的行的变量范围。从那时起,调用文件中该行中的任何可用变量都将在被调用文件中可用。但是,所包含的文件中定义的所有函数和类都具有全局范围。
因为当您在全局范围中包含第二个文件时,变量作用域将保持全局,而包含的其他所有内容都将始终具有全局范围。换句话说,这两个文件中的所有内容,在这两种情况下,都是在全局范围内结束的,两者之间的作用域没有差别。
发布于 2012-02-20 18:47:46
当您包含一个文件时,您可以将它看作是一个单一的文件,例如:
测试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);
?>希望你能理解这两者的区别。本质上,它类似于复制并粘贴包含文件的命令。
变量和函数作用域就好像它是同一个文件一样,只要包含的文件在变量或函数调用之前包含在"includee“中。
https://stackoverflow.com/questions/9366563
复制相似问题