xDebug奇怪的__DIR__常量

时间:2014-01-21 09:54:37

标签: php xdebug magic-constants

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

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

__DIR__总是xdebug:,它将始终从false传到file_exists()

有什么工作吗?

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:0)

问题在于,您的调试器会显示错误的值,因为解析器已在脚本中替换了 DIR

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

How can i get the PHP magic constant __FILE__ work with Eclipse and PDT

  

您获得的输出不正确。 FILE 是一个特殊常量   在解析器时获得评估。

答案 2 :(得分:-4)

作为替代方案,将__DIR__常量替换为dirname(__FILE__)函数

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