2014-08-29 47 views
0

我正在重構一個基於Symfony 2.2/PHP 5.3的不太複雜的網站,這裏的主要問題是重複代碼。如何從Symfony控制器中提取動作?

有兩個捆綁包,一個用於主網站,另一個用於移動版本。這些差異不僅僅在模板和靜態文件上,因爲它們包含業務規則等方面的一些差異。

目前這兩個捆綁包運行三個控制器,一個是主控人員,另一個是異常控制器,但第三個控制器是「母控制器」,擁有幾種常用方法和行爲,並由實際控制器繼承。
這提出了一個小問題,因爲我不能簡單地使移動包的操作控制器從桌面包繼承。我所能做的就是在手機的DefaultController和桌面之間實現繼承...因此,除了一些自定義行之外,我仍然有一些行爲幾乎相同。

有沒有辦法將這些操作提取到泛型類,並將它們導入控制器(就像我們在Yii的Action類中那樣)?我搜索使用裝飾模式無濟於事,並想知道是否有任何一種已知的方法來實現這個想法。

回答

0

既然你有兩個捆綁包,我的第一個想法是創建另一個(我們稱之爲「CoreBundle」)並在那裏創建CommonController並將共同的邏輯放入其中。然後,讓其他控制器extend這個CommonController

更清潔但更難的解決方案是創建將通過所需的數據/服務進行參數化的服務。

+0

我可能沒有說清楚,但'CommonController'的想法不起作用,因爲我們已經有了一個'DefaultController',它包含了系統的通用邏輯 - 並且包含特定的動作沒有任何意義在上面 :( – igorsantos07 2014-08-29 19:15:13

相關問題