我创建了一个允许我调试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语句。
如何实现这一目标?
答案 0 :(得分:5)
您的函数无法使用调试,因为它超出了范围。你要么:
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;
}
}
答案 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。