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

标签 php eclipse xdebug

最近当我使用 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/

相关文章:

php - Docker安装pecl报"No releases available"错误

php - Xdebug 3 不包含在 phpinfo() 中

php - 使用 Homebrew 软件在 El Capitan 上安装 xdebug

PHP fatal error : Call to undefined function mysql_connect()

php - 仅更新具有设定值的列

android - 如何在 Eclipse 中解析 javax.xml.bind.JAXBContext?

java - wtf.is.going.on 中的抽象方法foo(E) 无法直接访问super.foo(e) 用ANT 编译

php - Braintree 沙盒测试(假随机数)

php - 显示数据库中 mm/dd/yy 日期为 "today"或更大的所有结果

android - 无法运行Android OpenCV人脸检测示例