最近,当我使用 XDebug(在 Ubuntu 上的 Eclipse 下)调试一些 PHP 文件时,我遇到了一个奇怪的行为:
print(__FILE__);
导致
"xdebug eval"
GEE!
所以这个神奇常数看起来not来处理这个。
有人知道修复或可行的解决方法吗?如何调试调试器?
(对路径进行硬编码是 PITA!)
您得到的输出并不正确。__FILE__
是一个在解析器时评估的特殊常量。当 PHP 脚本被编译时,它实际上会读到这样的内容:
// test.php
<?php
"test.php";
?>
即使脚本来源是:
// test.php
<?php
__FILE__;
?>
这意味着解析之后,不存在这样的“常量”__FILE__
根本没有,因为它已经被替换了。
这意味着如果您在 IDE 中通过 DBGp 进行操作eval
命令eval -- __FILE__
it can not给你__FILE__
与任何文件名。相反,它使用当前上下文的文件名,即xdebug eval
或者在以后的版本中,xdebug://debug-eval
.
本质上,这与执行以下操作相同:
php -r 'eval("__FILE__;");'
它还输出:
Command line code(1) : eval()'d code
Xdebug 查找这种格式,并将其更改为xdebug://debug-eval
这样它就可以实际调试到已评估的代码中。
__FILE__
在 PHP 源代码中按预期工作,可以通过以下代码片段证明:
<?php $far = __FILE__; // now evaluate $far in your IDE ?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)