Разыскивается PHP-фреймворк с поддержкой «горячего подключения» модулей?
Есть базовая система, умеющая делать основные административные задачи; написано на Kohana 3.2. Недавно появилась перспектива создания магазина односортных дополнений: разного рода отчеты по одним и тем же таблицам БД.
Я пытался это оформить одним модулем (разными контроллерами/вьюхами), но, раз модуль один, то i18n-переменные, конфиги — должны храниться в одном файле и возникает говнокодность в их дополнении/удалении.
Эти дополнения предполагается добавлять без участия программиста; — буквально кликом в интерфейсе.
Может кто-то с подобным сталкивался?
Kohana не принципиальна. Очень хочется узнать чем в таких ситуациях вы успешно пользуетесь, в виде какой структурной единицы системы оформляете (модуль, аддон, плагин или как это называется в выбранной вами системе) и на что бы вы посоветовали обратить внимание. Может быть есть какие-то шаблоны проектирования…
Нет ли в Yii возможности реализовать такую штуку как расширения. Т.е. на yii-сайте есть форма загрузки zip-файла с расширением. Закачав на сервер, оно должно гладко, без костылей, влиться в проект, но при этом, желательно, в особую папку с правами на запись.
Это расширение должно сразу же подхватываться, чтобы после такой установки и обновления страницы, в главном меню сайта, например, появился новый пункт и на сайте добавились несколько новых страниц?
Мои мысли по поводу Вашей задачи:
1) Здесь нужно понять как устроен роутинг запросов к модулю и соответственно что именно должно происходить в момент выгрузки/загрузки модуля. Это сильно зависит от возможностей языка и того, как язык исполняется. Насколько я помню, PHP не умеет динамически (в момент выполнения) грузить классы.
2) Такая структура обычно называется plugin
3) Если будете использовать систему плагинов, то применяйте систему namespace'ов (на эту тему советую смотреть в сторону того, как устроенно именование в PECL)
Насколько я помню, PHP не умеет динамически (в момент выполнения) грузить классы.
А разве бывает что кто-то грузит их не динамически?
автозагрузка вроде как еще с четвертой версии есть, и даже уже успела получить вторую версию (из функции с магическим именем в регистрацию обработчика).
Эти дополнения предполагается добавлять без участия программиста; — буквально кликом в интерфейсе.
Подобный функционал — CMS. Если нужен фреймворк с системой плагинов/расширений — симфони, все верно сказали. Только вот я так понял в кохане тоже есть какая-то подобная система, а вы ей не верно пользуетесь. В симфони хорошим тоном считается независимость каждого отдельного бандла. То есть если его вырвать из приложения, а его сервисы подменить другими — система и не заметит его отсутсвия
В кохане подобными расширениями являются модули, но они вручную прописываются в APP/bootstrap.php. И в этом случае я вижу возможность туда прописать модуль-контейнер, в который на правах контроллера будут грузиться однородные аддоны. Но возникает проблема с i18n, config, про которую я уже говорил — ведь у модуля эти вещи должны быть в единственном экземпляре.
Вам банально надо написать модуль, который генерит классы. То есть например у симфони центральная функция возвращает массив бандлов. Вам нужно где-то их хранить + добавлять нужные… Но вообще мне кажется это уже cms, а не фреймворк