CodeIgniter/Fat Models/Skinny Controllers

Kob*_*rgh 2 php model-view-controller controller model codeigniter

今天,我已经了解到拥有胖型和瘦身控制器被认为是一种好习惯.到目前为止,我已经反过来了,所以我认为我对MVC的理解现在已被证明是错误的.

大多数文章表明胖模型/瘦模控制器方法更好,我看到的主要原因是他们声称控制器不可重复使用.这对于CodeIgniter的标准安装来说是正确的,但是当使用像Wiredesignz的HMVC插件这样的插件时,这就成了一个问题.所以,简而言之,问题是:

具体使用Code Igniter的最佳方法是什么?

  1. 胖子/瘦身控制器
  2. 脂肪控制器/带有HMVC插件的瘦模型
  3. 脂肪控制器/瘦模型没有HMVC插件

我不再考虑脂肪控制器/瘦身模型没有HMVC插件作为选项,但包括它是为了完整性.

请问你的想法?HMVC插件是邪恶的吗?

Swi*_*ftD 5

你是正确的,分裂成模块确实否定了工作SC/FM的一些原因.但由于以下几个原因,它仍然是一种好的做法

1)代码的可重用正如您所说的模型应该是可重用的,您可以使可重用的代码越多越好.是的,我知道模块也是这样做的,但模块的重点更多的是代码被隔离和可移植,你仍然可能希望在稍后阶段扩展这些控制器,并且在那个时候到来时以SC/FM方式工作将有所帮助.

2)代码可读性在阅读代码时,大多数人将从您的路由配置开始,然后转到相应的控制器.一个瘦小的控制器充当导演,应该简洁易读.只需调用更复杂,更详细的代码.更少的代码更容易遵循.

3)在罗马时不容忽视的事实是,每个使用MVC框架的人都以这种方式工作,这意味着你也应该这样工作,是不是很好,但如果同一团队中有5个人在一起工作谁都想要与众不同,这只是屁股的痛苦.

你应该改写你的代码吗?

可能不会马上,我相信你有更好的事情要做.如果你从这一点开始尝试思考这种思维方式,那么在某些时候你会回顾你的旧代码并改变它(可能当你在那里改变一些东西时),但是现在如果它没有破坏...... .

此外,以模块化方式工作并不像看起来那么简单,使得真正可重用的模块化代码并不容易,并且与为单个站点执行快速和脏代码相比,实际上需要相当多的开销.可能更好地开始练习这个,在新代码上,直到你很好地理解将现有代码转换成真正模块化的东西 - 这将是整理你的胖控制器的时候.

在为特定网站编写新代码时,我总是要记住,我可能希望稍后在其他网站上重复使用它,但如果我试图让所有选项都可以在阳光下重复使用,那么我将无法完成任何工作.当时机成熟时,最好去调整它.

关于HMVC的观点 我会说实话,我真的不知道HMVC的内容是什么,但模块是自切片面包以来最好的东西,因为我偶然发现HMVC wiredesignz我现在为更多网站做的工作少得多 - 而且很多更重要的是,我花了很多时间做同样的事情......你想要一个画廊在你的网站上.继承人画廊经理模块,Cms,你说,是的,有一个cms模块,产品,是的,还有一个产品模块......你明白了.我现在在一个框架而不是数百个不同的网站上有很多变化.

摘要

您可能正在处理简单的模块,这意味着代码的可用性和清晰度不是这些模块中的主要问题.但是今天开始编写好的做法.当你正在研究一些庞大的CMS或产品模块时,你会很高兴你做到了.

请查看这个以获取有关应该在哪里进行的指导如何在MVC中构建模型?