鍍金池/ 問(wèn)答/PHP/ PHP開(kāi)發(fā)接口,把所有接口放在一個(gè)類(lèi)(Controller)有什么問(wèn)題?

PHP開(kāi)發(fā)接口,把所有接口放在一個(gè)類(lèi)(Controller)有什么問(wèn)題?

公司用的Yii框架,前后端分離,但是...

項(xiàng)目某個(gè)大模塊接口的代碼全部都寫(xiě)在一個(gè)Controller,比如小程序和APP的接口都在一個(gè)Controller,是基本所有的代碼,包括原本應(yīng)該寫(xiě)在Model里的代碼,說(shuō)實(shí)話(huà),看到這種寫(xiě)法的實(shí)話(huà)我是很震驚的。

我也是個(gè)小菜雞,但我想這種寫(xiě)法是一定有問(wèn)題的,包括載入無(wú)用的類(lèi),內(nèi)存開(kāi)銷(xiāo),可讀性下降等,不過(guò)是否還有其他的問(wèn)題? 希望有大佬可以說(shuō)說(shuō)

回答
編輯回答
還吻

先去了解一下什么是MVC思想

2017年4月17日 00:46
編輯回答
墨小羽

可以說(shuō)之前那個(gè)人寫(xiě)的有問(wèn)題,該分模塊的時(shí)候是要分模塊的,控制器該分的時(shí)候也要分.

2017年11月27日 19:58
編輯回答
我甘愿

在一個(gè)9000行左右的Controller里和50行左右的Controller執(zhí)行相同的一個(gè)方法:

public function actionTest(){

var_dump(memory_get_usage());

}

一個(gè)返回6253168,一個(gè)返回3465856,單位是B,這樣是不是證明確實(shí)有額外的內(nèi)存開(kāi)銷(xiāo)?
那么是否還有其他的性能或者可維護(hù)性上的問(wèn)題呢?

2018年4月16日 18:19
編輯回答
深記你

最大的問(wèn)題就是破壞性,一單某個(gè)函數(shù)的值沒(méi)定義或者有任何錯(cuò)誤,整個(gè)Controller就拋出錯(cuò)誤了,所有相關(guān)的功能全部癱瘓。好的方式是通過(guò)Route跟Controller來(lái)控制不同的邏輯。通過(guò)中間件兒來(lái)控制權(quán)限,把分工跟責(zé)任細(xì)化到個(gè)個(gè)不同的Controller。最好能達(dá)到單一邏輯通過(guò)單一Controller來(lái)實(shí)現(xiàn)。這樣維護(hù),迭代的時(shí)候都比較容易。

2017年7月28日 10:27
編輯回答
初心

最大問(wèn)題是維護(hù)困難啊,本來(lái)可以通過(guò)文件目錄先到對(duì)應(yīng)程序代碼修改的,現(xiàn)在要在這個(gè)超級(jí)長(zhǎng)的文件里先到目標(biāo)代碼,這是個(gè)很痛苦的事情哎!
另外多人協(xié)同開(kāi)發(fā)的時(shí)候版本庫(kù)很容易發(fā)生沖突哎,動(dòng)不動(dòng)就要處理沖突也很痛苦啊。

2017年10月28日 12:28
編輯回答
厭惡我

耦合度太高了吧?一點(diǎn)拙見(jiàn)~現(xiàn)在開(kāi)發(fā)不是都要解耦么?

2018年1月8日 22:11