То, как использовать PHP, включает через несколько каталогов/подкаталогов с относительными путями

Я действительно не вижу положительного преимущества от использования анонимных пространств имен в заголовках. Беспорядок, который может следовать из наличия того же среднего объявления символа, в сущности, другая вещь в единицах компиляции, которые включают тот заголовок, был бы гарантируемым способом пойти преждевременно и крайне лысый.

9
задан Alastair Hodgson 28 September 2009 в 17:20
поделиться

4 ответа

Обычно у меня есть файл с именем config в корне моего приложения, и в нем я определяю константу для базового пути и некоторых других:

define('APP_BASE_PATH', dirname(__FILE__));
define('APP_FUNCTIONS_PATH', APP_BASE_PATH . '/functions');

и я включаю свои файлы, такие как

include (APP_BASE_PATH . 'includes/another_file.php');
include (APP_FUNCTIONS_PATH . '/function_file.php');

таким образом я могу разместить свое приложение в любом каталоге, плюс я могу перемещать файлы без особых проблем.

также использование полного пути ускоряет включение

21
ответ дан 4 December 2019 в 07:35
поделиться

или ...

include ($ _ SERVER ['DOCUMENT_ROOT']. '/ Includes / header.php');

2
ответ дан 4 December 2019 в 07:35
поделиться

Я предпочитаю устанавливать переменные среды (в Apache, используя .htaccess или .conf). Таким образом, вы можете свободно перемещать все свои файлы в любом месте корневого веб-каталога, и он будет иметь доступ к этим переменным.

SetEnv lib /library/folder/
SetEnv public /my/web/root/
SetEnv environ DEVELOPMENT

Также вы можете использовать переменную с именем «environment», упомянутую выше.

5
ответ дан 4 December 2019 в 07:35
поделиться

Относительные и абсолютные пути в PHP немного ненадежны, потому что они зависят не только от текущего каталога включаемого файла, но и от текущего рабочего каталога.

Итак, вам нужно решение, состоящее из двух частей.

Во-первых, вам нужен перенаправитель. По сути, это включаемый файл, который служит единой точкой вызова для всех остальных страниц. Его задача - включить остальную часть вашей инфраструктуры. Все ваши страницы вызывают этот перенаправитель и только этот перенаправитель (но вы можете связать их).

Этот перенаправитель теперь выполняет

 include_once dirname(__FILE__).'/include/include.php';

Это позволяет вам изменить включаемый файл инфраструктуры или расположение, и все, что вам нужно обновить, - это один файл. Вызов dirname () решает все относительные и абсолютные проблемы и заставляет искать следующий шаг относительно себя. И по определению это меняется только тогда, когда вы его меняете, так что он всегда будет работать.

Вторая часть - это настраиваемый модуль включения, поэтому вы можете вызывать контент по имени с помощью функции, и она отправляется и получает нужный файл. Захоронить это в каталоге инфраструктуры - вот куда надо. Затем он становится черным ящиком, который страницы за пределами этой области вызывают, не зная и не имея необходимости знать, как он работает и где находится. Это устраняет необходимость в константах пути для включения фрагментов страницы, потому что у вас есть одно место, делающее все за вас.

1
ответ дан 4 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: