我们正在建立一个新网站,它将重用另一个网站使用的现有 symfony 软件。我将可重用组件移动到插件(“app-plugin”)中,以避免重复代码和数据。该插件将在网站的 svn 存储库中配置为 svn-external。
现有的 symfony 实例包含最初在其他插件(例如 sfDoctrineGuardPlugin)中定义的被覆盖的学说类(模型、表单、表单过滤器)。两个 symfony 实例都可以重用被覆盖的类,因此我将把它们移到“app-plugin”中。但这会导致问题:
例如,如果有人运行symfony doctrine:build-forms
,移动的文件将由 lib/form/doctrine 中的任务重新创建,并且将包含空的类定义。原因对我来说很清楚:symfony 怎么知道“app-plugin”已经定义了那些表单类?唯一的方法是在执行任务之前自动加载所有类并检查类是否已经可用。
一种解决方法是在应用插件的 config/autoload.yml 中排除这些类。但是有更好的方法吗?
编辑
我使用术语“app-plugin”来避免普通插件(例如 sfGuard)和我们包含共享组件的插件之间的混淆。
前:
后: