XDebug weird __DIR__ constant

Я пишу приложение PHP CLI, которое загружает файлы YAML. При попытке сделать это в сеансе xDebug:

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

__DIR__ allways xdebug:, который всегда будет false от file_exists().

Есть ли какая-нибудь работа?

Ответы

Ответ 1

Установите $dir = __DIR__; и используйте if (file_exists($dir . '/../../foo/bar'). Это будет работать так.

Ответ 2

Дело в том, что ваш отладчик показывает вам неправильное значение, поскольку синтаксический анализатор DIR уже был заменен вашим script.

Все объяснение можно найти здесь:

Как я могу получить постоянную магию PHP __FILE__ с Eclipse и PDT

Полученный результат не является неправильным. FILE - специальная константа, которая оценивается во время анализатора.

Ответ 3

В качестве альтернативы замените константу __DIR__ функцией dirname(__FILE__)

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