В настоящее время я думаю о том, как реализовать плагиновую функцию для моего приложения symfony2.
Мои цели заключаются в следующем:
Моя проблема будет примерно такой: как загрузить пакет после того, как ядро уже загружено (поскольку информация о том, какие плагины активны, должна находиться в базе данных идеально, а не внутри какого-либо файла на жестком диске, но может быть кэширована). Я не нашел ни одного пакета или записи повара на эту тему. Есть ли практика, управляющая чем-то подобным? Возможно, я думаю не в том направлении.
Я надеюсь, что есть кто-то, у кого может быть полезная идея и вид знаний о symfony2, которого у меня нет.
PS: Пока нет кода, так как это всего лишь некоторое размышление над концепцией о том, как справиться с этим.
AppKernel
возвращает зарегистрированные пакеты как массив, поэтому, полагая, что метод хранения, который вы используете для определения активных плагинов, не привязан к Symfony (т.е. Вы можете получить к нему доступ до того, как приложение будет полностью загружено), тогда это должно быть так же просто добавив что-то подобное вашему AppKernel.php
:
public function registerBundles()
{
...
...
$bundles = array_merge($bundles, MyApp\PluginManager::getPluginBundles());
...
return $bundles;
}
Предоставление метаданных плагина может быть выполнено различными способами (возможно, только определенным каталогом location/в файлах плагинов, в которых хранятся файлы txt/image), но загружать все, что должно быть легко, когда у вас есть материал для управления плагинами (и вы можете легко получить установленных плагинов и т.д.).