【发布时间】:2011-12-22 17:21:39
【问题描述】:
变量范围(定义here)
变量的范围是定义它的上下文。大多数情况下,所有 PHP 变量都只有一个作用域。这个单一范围也涵盖了包含和必需的文件。
//a.php
<?php
class a {
function &func () {
$avar = array("one", "two", "three");
return $avar;
}
?>
__
//b.php
<?php
class b {
include("a.php");
$ainstance = new a;
var_dump($ainstance->func());
}
?>
上述代码将按预期转储有关变量的信息(我的意思是 WRT 函数 func 中形成的结构)。
我的怀疑是,
- 变量在函数范围内时存储在哪里?
- 如果它在调用堆栈上,那么当函数终止时变量不会被清理/销毁吗?
- 既然变量没有被破坏(根据上面的代码),为什么它没有被破坏或者 PHP 有一种机制来保存变量(比如在堆中)并返回对它的引用。
- PHP 有调用栈吗?
【问题讨论】: