tru*_*ru7 14 php variables undefined
我是一个以PHP开头的C++程序员.我发现由于未定义的变量,我失去了大部分调试时间(和我的自尊!).据我所知,处理它们的唯一方法是在执行时观察输出.
其他策略是否注意到这些错误?(类似于C++,单个编译为您提供了所需的所有线索)
感谢您的任何见解
将E_NOTICE消息记录到文本文件中.然后,您可以使用自动脚本处理日志,以指示引发这些脚本的文件和行.
不可以.在PHP中,您只能在尝试访问变量时才知道变量不存在.
考虑:
if ($data = file('my_file.txt')) {
if (count($data) >= 0)
$line = reset($data);
}
var_dump($line);
Run Code Online (Sandbox Code Playgroud)
您必须重新构建代码,以便所有代码路径都可以定义变量,例如:
$line = "default value";
if ($data = file('my_file.txt')) {
if (count($data) >= 0)
$line = reset($data);
}
var_dump($line);
Run Code Online (Sandbox Code Playgroud)
如果没有任何默认值,这仍然比isset你在最后的变量名中输入拼写错误时会发出警告更好if:
$line = null;
if ($data = file('my_file.txt')) {
if (count($data) >= 0)
$line = reset($data);
}
if ($line !== null) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用isset1来检查给定点是否存在变量.但是,如果您的代码依赖于此,那么它的结构可能很差.我的观点是,与例如C/Java相反,在编译时,您无法确定对变量的访问是否有效.由于PHP中的块作用域不存在,这会变得更糟.
1严格来说,isset不会告诉您是否设置了变量,它会告诉您它是否已设置且不为空.否则,你需要get_defined_vars.