1

我创建了一个函数来调试 PHP 脚本,只要将变量 ( $debug) 设置为1

function debug($msg) {
    if ($debug == 1) {
        echo $msg;
    } else {
        return false;
    }
}

这样,在我的脚本顶部(在functions.php调用文件之前),我写:

$debug = 1;

启用调试,然后:

debug("Function executed: " . $data);

在某些点上,以便我知道字符串值/在那一点上,所需的响应是屏幕上显示的消息。

但是,无论$debug字符串的值是什么,我都看不到任何echo'd 语句。

如何做到这一点?

4

5 回答 5

5

调试对您的函数不可用,因为它超出了范围。你要么:

  1. 需要将其作为参数传递
  2. 使用global关键字将其包含在您的函数中(不鼓励)

.

function debug($msg, $debug){
    if($debug==1){
    echo $msg;
} else {
    return false;
    }
}

或者

function debug($msg){
    global debug;
    if($debug==1){
    echo $msg;
} else {
    return false;
    }

}

于 2013-05-29T12:19:12.787 回答
2

很难说,因为你提供的数据太少。

原因可能是您的$debug变量在函数内部未知。因为global不建议使用 s,所以考虑使用 constants define("DEBUG",1);

编辑

我在另一个问题中提出了我如何使用一个类来做同样的事情,因为类名也可以全局访问。

于 2013-05-29T12:20:09.947 回答
0

除非您这样做,否则函数无法访问全局变量。例如:

function debug($msg( {
   global $debug;
   etc...

PS:请不要这样做。找到更好的方法。真的。

于 2013-05-29T12:20:29.510 回答
0

也可以声明一个 const,(然后确保命名空间是正确的),如下所示:

const debug = true;
function newPrint($msg) {
  if (\debug === true) {
      echo $msg;
  } else {
      return false;
  }
}
\newPrint("heey");//will print "heey"

所以不要使用变量,而是使用常量。

于 2013-05-29T12:29:45.003 回答
0

$debug 是您的全局变量,因此在您的函数中无法访问它

于 2013-05-29T12:22:36.400 回答