PHP函数无法正常工作(回显字符串,简单)

时间:2013-05-29 12:17:43

标签: php function debugging

我创建了一个允许我调试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语句。

如何实现这一目标?

5 个答案:

答案 0 :(得分:5)

您的函数无法使用调试,因为它超出了范围。你要么:

  1. 需要将其作为参数传递
  2. 使用global关键字将其包含在您的功能中(不鼓励使用)
  3. 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;
        }
    

    }

答案 1 :(得分:2)

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

原因可能是您的$debug变量在函数内部未知。由于不建议使用global,因此请考虑使用常量define("DEBUG",1);

修改

我在another question中提出了如何使用类来执行相同的操作,因为类名也是全局访问的。

答案 2 :(得分:0)

在您完成此操作之前,函数无法访问全局变量。例如:

function debug($msg( {
   global $debug;
   etc...
PS:拜托,请不要这样做。找到更好的方法。真。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

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