CodeIgniter / Fat Models / Skinny Controllers

时间:2013-01-07 10:38:57

标签: php codeigniter model-view-controller model controller

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

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

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

  1. 胖型/瘦控制器
  2. 脂肪控制器/带有HMVC插件的瘦模型
  3. 胖控制器/没有HMVC插件的瘦模型
  4. 我不再考虑没有HMVC插件的胖控制器/瘦模型作为选项,但包括它是为了完整性。

    你的想法,好吗? HMVC插件是邪恶的吗?

2 个答案:

答案 0 :(得分:5)

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

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

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

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

您是否应该重写代码?

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

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

在为特定网站编写新代码时,我始终牢记我可能希望稍后在其他网站上重复使用它,但如果我试图让所有选项都可以在阳光下重复使用,我就永远不会得到任何东西完成。当时机成熟时,最好去调整它。

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

<强>摘要

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

请查看此内容,了解How should a model be structured in MVC?

所指的内容

答案 1 :(得分:0)

嗯我不知道关于HMVC,但我一直在使用codeigniter很长时间,我可以建议你关于胖模型和瘦控制器是一个很好的做法:

  1. 让后端和前端访问相同的模型
  2. 创建自己的API以与其他应用程序连接,以便重复使用相同的胖模型
  3. 然而,我已经看过HMVC文档了,它似乎真的取决于你如何分发你的逻辑以及这个模块化组件如何共享相同的数据资源

    这取决于您正在进行的项目