php includes есть ли способ включить файл, относящийся только к этому документу?

Если у меня есть файл index.php, который включает inc / footer.php, я бы написал:

include 'inc/footer.php'; 

Если я хочу включить другой файл в footer.php, я должен сделать это относительно файла index.php (тот, который его включает). Это может быть не проблема, но как насчет того, хочу ли я включить index.php из другого места?

Я понимаю, что существует несколько способов достижения этого, например, определение абсолютного пути или использование dirname ( FILE ).

Это то, что никогда не было настоящей проблемой, так как так или иначе я всегда это понимал, но я всегда задавался вопросом, как именно включить работу в php.

Может ли кто-нибудь объяснить мне, что происходит под капотом?

благодаря

Это может помочь: (из http://php.net/manual/en/function.include.php )

Файлы для включения сначала просматриваются в каждой записи include_path относительно текущего рабочего каталога, а затем в каталоге текущего скрипта. Например, если ваш include_path является библиотекой, текущим рабочим каталогом является / www /, вы включили include / a.php, и в этом файле есть «b.php», b.php сначала просматривается в / www / libraries /, а затем в / WWW / включить /. Если имя файла начинается с ./ или ../, он просматривается только в текущем рабочем каталоге или родителе текущего рабочего каталога, соответственно

В вашем вопросе говорится:

Если я хочу включить другой файл в footer.php, я должен сделать это относительно файла index.php (тот, который его включает).

Это верно, только если путь к файлу, который вы пытаетесь include() начинается с ./ или ../ . Если вам нужно добавить файл над текущим файлом, используя относительный путь, вы можете (как вы сказали) использовать:

 include( dirname(__FILE__) . '/../file.php') 

Если вы определяете абсолютный путь, вы также можете добавить это к текущему пути include_path:

 set_include_path(get_include_path() . PATH_SEPARATOR . '/absolute/path'); 

Затем вы можете выполнить все свои действия относительно «/ absolute / path /».

Лучшее место для поиска ответа в руководстве PHP.

http://php.net/manual/en/function.include.php

Короткий ответ: путь относится к исполняемому скрипту PHP, который не включает sub.

Наилучшим методом является глобальный абсолютный путь к вашим функциям, папкам классов и т. Д.