Php 如何从Symfony控制器中提取操作?

Php 如何从Symfony控制器中提取操作?,php,symfony,decorator,php-5.3,Php,Symfony,Decorator,Php 5.3,我正在基于symfony2.2/php5.3重构一个不太复杂的网站,这里的主要问题是重复代码 有两个捆绑包,一个用于主网站,另一个用于移动版本。这些差异不仅存在于模板和静态文件上,还包括业务规则等方面的一些差异 目前,这两个捆绑包有三个控制器,一个是主控制器,另一个是例外控制器,但第三个是“母控制器”,拥有几种常见的方法和行为,由实际控制器继承。 这带来了一个小问题,因为我不能简单地让移动包的动作控制器从桌面包继承。我所能做的就是在手机的DefaultController和桌面控制器之间实现继承

我正在基于symfony2.2/php5.3重构一个不太复杂的网站,这里的主要问题是重复代码

有两个捆绑包,一个用于主网站,另一个用于移动版本。这些差异不仅存在于模板和静态文件上,还包括业务规则等方面的一些差异

目前,这两个捆绑包有三个控制器,一个是主控制器,另一个是例外控制器,但第三个是“母控制器”,拥有几种常见的方法和行为,由实际控制器继承。
这带来了一个小问题,因为我不能简单地让移动包的动作控制器从桌面包继承。我所能做的就是在手机的
DefaultController
和桌面控制器之间实现继承。。。因此,我仍然有一系列几乎相等的动作,除了一些自定义行


有没有办法将这些动作提取到泛型类中,并将它们导入控制器中(就像我们在Yii的动作类中所做的那样)?我搜索了关于使用decorator模式的内容,但没有结果,我想知道是否有任何已知的方法来实现这个想法。

因为您有两个包,我的第一个想法是创建另一个包(我们称之为“CoreBundle”),在那里创建
CommonController
,并将公共逻辑放入其中。然后,让其他控制器扩展此公共控制器


更干净但更难的解决方案是创建由所需数据/服务参数化的服务

我可能没有说得足够清楚,但是
CommonController
的想法不起作用,因为我们已经有了一个
DefaultController
,它包含了系统的通用逻辑-在它上面包含具体的操作是没有意义的:(