Я хотел бы сделать свои проекты настолько гибкими, что их можно просто скопировать + вставить друг в друга.
Моя структура проекта — 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: Я только что вернулся с трехлетнего перерыва в программировании. Я также счастлив, если вы скажете мне, что выше, в общем, плохая идея, и объясните мне причину 🙂
Я думаю, что это странный способ управления вашими проектами.
Где будет основной сценарий 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.
Других решений пока нет …