Привет, ребята, я давно хотел войти в мир PHP, но я так и не закончил доставлять себе удовольствие, один из вопросов, которые у меня есть, это как обрабатывать пути include и require и если у вас есть несколько папок для включения файлов php других папок является сложным.
Пример, если у меня есть конфигурация моей системы, подобная этой.
Проблема заключается в перемещении между маршрутами, потому что, если я хочу включить файл config.php в класс WorkerImp.php, я не знаю, как это сделать из-за маршрутов, PHP сообщает мне, что файл не может быть включен.
Я читал о создании файла конфигурации с базовыми маршрутами, но я пришел к тому же выводу, чтобы иметь доступ к этим постоянным маршрутам, которые мне нужно добавить config.php
В общем
include
как ониrequire
работают вот так:Если файлы находятся в том же каталоге, что и скрипт
Если файлы находятся в другом каталоге
Если файл находится в родительском каталоге скрипта, он помещается
../
перед именем файла:../
используется для возврата между каталогами.Его также можно использовать
$_SERVER['DOCUMENT_ROOT']
в качестве ориентира.Если он
config.php
находится в корневом каталоге. Вы можете сделатьinclude
этот файл изWorkerImp.php
:Или по:
здесь вы
../../
возвращаетесь на две директории назад, откуда находится скрипт. То есть он возвращается кimp>dao>
каталогуconfig.php
, который он находит в корне приложения.Другая возможность
Я реализовал следующее, чтобы оставаться независимым от любых возможных изменений маршрута.
Я создал файл с именем,
dirs.php
в котором я определил все маршруты моего проекта. Я помещаю этот файл в корень (корневой каталог).Затем, когда мне нужно включить какой-либо файл из проекта:
Обратите внимание, что я использую
include_once
, чтобы он не включал его снова, если это сделал другой файл в проекте (чтобы понять разницу междуinclude
einclude_once
, вы можете проконсультироваться: в чем разница между require, require_once, include, include_once в PHP?В чем преимущество использования этого метода?
Если по какой-то причине мне нужно изменить путь к каталогу
Dao
, мне не нужно просматривать все части, в которых задействованы включения этого каталога, я просто меняю значениеDAO_PATH
и все.Какой недостаток?
Включая файл
dirs.php
, вы включаете некоторые константы, которые вы не можете использовать. Это также не сотни или тысячи констант, так что это не повлияет на производительность вашей программы.Маршруты в php поначалу несколько сложны в управлении, и тем более, если вы не используете какой-либо фреймворк (например, laravel), то это будет немного раздражать.
два варианта, которые вы указали в своем вопросе, включают и требуют , за исключением ошибки, по этой ссылке вы сможете узнать больше, что я имею в виду, с помощью них вы сможете взять то, что есть в указанном файле, и «вставить» это в твоем (скажем кратко)
Хотя, если вы хотите использовать функции и другие функции созданного класса, вы должны использовать зарезервированное слово use , по этой ссылке вы можете узнать больше.
Какая польза от корня вашего проекта для пути и имени класса
ВАЖНАЯ ЗАМЕТКА
Важно, чтобы вы помнили, что маршруты в php всякий раз, когда вы входите в папку контейнера, вы должны ставить косую черту ( \ ), пока не найдете свои файлы.
Здесь вы можете увидеть больше о путях и файлах
Надеюсь, я смог вам помочь... и удачи с PHP
Ваше здоровье!!!