мы создаем новый веб-сайт, который будет использовать существующее программное обеспечение Symfony, используемое другим веб-сайтом. Я перемещаю повторно используемые компоненты в плагин («app-plugin»), чтобы избежать дублирования кода и данных. Плагин будет настроен как svn-external в репозиториях svn сайтов.
Существующий экземпляр Symfony содержит переопределенные классы доктрин (модели, формы, фильтры форм), которые изначально определены в других плагинах (например, sfDoctrineGuardPlugin). Переопределенные классы могут быть повторно использованы обоими экземплярами symfony, поэтому я собираюсь переместить их в «плагин приложения». Но это вызывает проблемы:
Если кто-то, например, запустит symfony doctrine:build-forms
, перемещенные файлы будут воссозданы задачей внутри lib / form / doctrine и будут содержать пустые определения классов. Причина очень ясна для меня: как Symfony должен был знать, что «app-plugin» уже определяет эти классы форм? Единственный способ - это автоматически загрузить все классы перед выполнением задачи и проверить, доступны ли уже классы.
Обходным решением было бы исключить эти классы в config / autoload.yml плагина приложения. Но есть ли лучший способ?
Редактировать
Я использую термин «приложение-плагин», чтобы избежать путаницы между обычным плагином (например, sfGuard) и нашим плагином, который содержит общие компоненты.
До:
После того, как: