xdebug怪异__dir__常数



我正在编写一个加载yaml文件的PHP CLI应用程序。尝试在Xdebug会话中执行此操作时:

if (file_exists(__DIR__ . '/../../foo/bar')
{
    /* ... */
}

__DIR__ Allways是xdebug:,它将从file_exists()到达false

有没有工作?

设置$dir = __DIR__;并使用if (file_exists($dir . '/../../foo/bar')。它将像那样工作。

问题是您的调试器向您显示错误的值,因为 dir 已经被解析器替换在脚本中。

可以在这里找到整个解释:

我如何获得php魔术常数__file__ ________________________________

您获得的输出不正确。文件是一个特殊常数 在解析器时进行评估。

作为替代性替换您的__DIR__常数用dirname(__FILE__)函数

if (file_exists(dirname(__FILE__) . '/../../foo/bar')
{
    /* ... */
}

最新更新