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')
{
    /* ... */
}
Другие вопросы по тегам