gpt4 book ai didi

php - 我怎样才能让 PHP 魔法常量 __FILE__ 与 Eclipse 和 PDT 一起工作

转载 作者:可可西里 更新时间:2023-10-31 22:49:45 24 4
gpt4 key购买 nike

最近当我使用 XDebug 调试一些 PHP 文件时(在 Ubuntu 上的 Eclipse 下)我遇到了一个奇怪的行为:

print(__FILE__);

结果

"xdebug eval"

哎呀!

所以这个魔法常量似乎对此起作用。

有人知道修复方法或可行的解决方法吗?如何调试调试器?(硬编码路径是一个 PITA!)

最佳答案

您得到的输出是正确的。 __FILE__ 是一个特殊常量,在解析器时进行计算。当 PHP 脚本被编译时,它实际上会读取如下内容:

// test.php
<?php
"test.php";
?>

即使脚本源是:

// test.php
<?php
__FILE__;
?>

这意味着在解析之后,根本就没有这样的“常量”__FILE__,因为它已经被替换了。

这意味着如果您在 IDE 中执行操作,通过 DBGp 的 eval 命令 eval -- __FILE__ 它可以给您__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 ?>

关于php - 我怎样才能让 PHP 魔法常量 __FILE__ 与 Eclipse 和 PDT 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4924676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com