【发布时间】:2014-09-13 16:55:06
【问题描述】:
我正在使用$debug 变量来控制我正在测试的函数中的打印语句。尽管 $debug 被声明并初始化为 true 在与函数相同的范围级别,但它在函数内部被视为 false(或 undefined,我猜)。我对 PHP 中变量作用域的理解是错误的吗?我该如何解决这个问题?
我的实际代码要复杂得多,但以下是一个显示相同问题的最小示例。对于它的价值,我在 Mac OS X 10.9.4 上使用 PHP 5.4.24 在命令行上运行它。
<?php
$debug = true;
function myFunction()
{
if($debug) {
echo "I'm debugging";
} else {
echo "I'm not debugging";
}
}
myFunction();
?>
对我来说,这个函数显示“我没有调试”。
【问题讨论】:
-
这是这里的基本范围。
$debug不在范围内。为什么会这样? -
@JohnConde 与函数本身处于同一级别。怎么不在范围内?
-
这不是 JavaScript。在函数外部声明的变量超出范围。 Documentation.
-
您可以全球化调试变量,但这不是一个好习惯。但是,如果您使用类,则可以通过 $this->debug 访问它。
-
在这里也可以看到我的回答:stackoverflow.com/questions/15687363/…