xDebug странный __DIR__ константа
Я пишу приложение PHP CLI, которое загружает файлы YAML. При попытке сделать это в сеансе xDebug:
if (file_exists(__DIR__ . '/../../foo/bar')
{
/* ... */
}
__DIR__
всегда есть xdebug:
что всегда приведет к false
от file_exists()
,
Есть ли работа вокруг?
3 ответа
Задавать $dir = __DIR__;
и использовать if (file_exists($dir . '/../../foo/bar')
, Это будет работать так.
Дело в том, что ваш отладчик показывает вам неверное значение, так как DIR уже заменен в вашем скрипте анализатором.
Полное объяснение можно найти здесь:
Как я могу заставить магическую константу PHP __FILE__ работать с Eclipse и PDT
Вывод, который вы получаете, не является неправильным. FILE - это специальная константа, которая оценивается во время синтаксического анализа.
В качестве альтернативы замените ваш __DIR__
постоянный с dirname(__FILE__)
функция
if (file_exists(dirname(__FILE__) . '/../../foo/bar')
{
/* ... */
}