PHP включает в себя есть ли способ включить файл, относящийся только к этому документу? - PullRequest
13 голосов
/ 23 июня 2009

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

include 'inc/footer.php';

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

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

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

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

Спасибо

Ответы [ 2 ]

35 голосов
/ 23 июня 2009

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

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

Ваш вопрос гласит:

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

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

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

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

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

Затем вы можете делать все ваши включения относительно '/ absolute / path /'.

0 голосов
/ 23 июня 2009

Лучшее место, чтобы найти ответ в руководстве по PHP.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...