首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在文件B中包括文件A,反之亦然。

问在文件B中包括文件A,反之亦然。
EN

Stack Overflow用户
提问于 2012-02-20 18:38:03
回答 2查看 74关注 0票数 3

“包容者”和“包容者”在变量和功能范围界定方面有什么不同?

例如,这两个测试的工作原理是相同的,但是是否有我应该知道的范围的微妙之处呢?

试验1:

文件"one.php":

代码语言:javascript
复制
<?php 
$a = 5;
include("two.php");
?>

文件"two.php:

代码语言:javascript
复制
<?php
function f($x) { return $x * 2; }
echo f($a);
?>

试验2:

文件"one.php":

代码语言:javascript
复制
<?php 
$a = 5;
?>

文件"two.php:

代码语言:javascript
复制
<?php
include("one.php");

function f($x) { return $x * 2; }

echo f($a);
?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-20 18:52:57

执行PHP文件时,它从全局范围开始。包括文件说明;

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

因为当您在全局范围中包含第二个文件时,变量作用域将保持全局,而包含的其他所有内容都将始终具有全局范围。换句话说,这两个文件中的所有内容,在这两种情况下,都是在全局范围内结束的,两者之间的作用域没有差别。

票数 3
EN

Stack Overflow用户

发布于 2012-02-20 18:47:46

当您包含一个文件时,您可以将它看作是一个单一的文件,例如:

测试1作为一个文件:

代码语言:javascript
复制
<?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作为一个文件:

代码语言:javascript
复制
<?php 
  // first include include("one.php");
  $a = 5;
  
  // then continue execution of two.php
  function f($x) { return $x * 2; }
  echo f($a);
?>

希望你能理解这两者的区别。本质上,它类似于复制并粘贴包含文件的命令。

变量和函数作用域就好像它是同一个文件一样,只要包含的文件在变量或函数调用之前包含在"includee“中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9366563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档