假設類的結構如下(MVC控制器):
class Controller { public function action1(){ if(condition1) { // …… } // elseif(condition2){……} // elseif(conditionN){……} else { // …… }} public function action2(){ if(condition1) { // …… } // elseif(condition2){……} // elseif(conditionN){……} else { // …… }}}
分離後(不考慮介面):
class Controller_Action1 extends Controller { public function condition1(){ ……} public function condition2(){ ……} public function conditionN(){ ……}}class Controller_Action2 extends Controller { public function condition1(){ ……} public function condition2(){ ……} public function conditionN(){ ……}}
回複內容:
假設類的結構如下(MVC控制器):
class Controller { public function action1(){ if(condition1) { // …… } // elseif(condition2){……} // elseif(conditionN){……} else { // …… }} public function action2(){ if(condition1) { // …… } // elseif(condition2){……} // elseif(conditionN){……} else { // …… }}}
分離後(不考慮介面):
class Controller_Action1 extends Controller { public function condition1(){ ……} public function condition2(){ ……} public function conditionN(){ ……}}class Controller_Action2 extends Controller { public function condition1(){ ……} public function condition2(){ ……} public function conditionN(){ ……}}
從分工合作的角度來說,這麼分開挺好的。
在symfony架構中,多個actions可以寫在一個actions.class.php檔案裡面,也可以每一個action唯寫在一個XxxAction.class.php裡,根據實際情況發現還是分開寫好,這樣很容易把工作分給更多的人完成
當然你這裡還沒有分離到每個action一個檔案的程度,但是相對比最開始所有actions一個檔案來說,還是要合理不少。如果一個團隊的分工就是按照module的概念(module是某幾個actions的集合)去分的,那麼你這麼分其實也足夠了
你這裡用的是繼承,繼承的目的是提取共性, 所以你應該展示你的controller類,才好判斷這個設計的合理性。