Автозагрузчик для неизвестных уровней проекта

Я хотел бы сделать свои проекты настолько гибкими, что их можно просто скопировать + вставить друг в друга.

Моя структура проекта — ProjectName / (bin, config, lib).

После копирования + вставки у меня будет цепочка типа ProjectName1 / lib / ProjectName2 / lib / ProjectName3 /.

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

Например, если класс в ProjectName1 / lib / ProjectName2 / lib / вызывает «new Config», он должен получить файл конфигурации, расположенный в ProjectName1 / lib / ProjectName2 / config / config.php.

(Но не в ProjectName1 / config / config.php и не в ProjectName1 / lib / ProjectName2 / lib / ProjectName3 / config / config.php).

Есть ли способ сделать это?

Редактировать:
Имеет ли смысл делать файлы уникальными? Например: если ‘config.php’ был ‘ProjectName2Config.php’, то (почти) нет шансов на конфликты. Таким образом, автозагрузчик может искать везде и в конечном итоге найдет свой файл.

Редактировать:
Каждый проект будет иметь свой собственный автозагрузчик, доступный по причинам копирования + вставки. Однако я думал, что я загрузил бы только один для ProjectName1. Лучше загрузить их все, чтобы каждый мог оставаться простым?

Ура,
Питер

PS: Я только что вернулся с трехлетнего перерыва в программировании. Я также счастлив, если вы скажете мне, что выше, в общем, плохая идея, и объясните мне причину 🙂

1

Решение

Я думаю, что это странный способ управления вашими проектами.
Где будет основной сценарий Project1 и Project2?

Например, я пишу это в моем файле index.php или в главном файле проекта / lib:

<?php define('ROOT_PATH', dirname(__FILE__) . '/'); ?>

И я всегда использую этот ROOT_PATH как начало путей включения.

В вашем случае Project1 ROOT_PATH будет что-то вроде «/ var / www / Project1 /», а Project2 ROOT_PATH будет «/ var / www / Project1 / lib / Project2 /»

Таким образом, новый Config в Project1 и Project2 будет использовать свой собственный файл config.php.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector