我正在编写一个加载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')
{
/* ... */
}