我应该使用框架还是编写自己的MVC?

时间:2009-05-23 15:56:50

标签: php model-view-controller zend-framework cakephp refactoring

我有一个目前到处都有的项目,我正在考虑将其作为MVC。

问题是系统当前正在使用,我无法更改界面(它在框架中:s)还有一些我需要自己处理的事情,如密码生成,登录和用户级别。< / p>

我已经拥有了MVC的模型方面所以我想知道是否值得使用像Zend Framework或CakePHP这样的框架,或者只是编写我自己的View和Controllers来解决这个问题?

我将不得不慢慢地工作,如果我使用其中一个现成的框架,我不确定我是否能够这样做。

8 个答案:

答案 0 :(得分:9)

我为Coldfusion编写了自己的MVC框架,因为目前“当月的风味”Mach-II非常缓慢。切换后,我的页面生成时间从2-5秒下降到9毫秒。

在过去的3年里,我已经将这个框架开发成了我所使用的任何商业或开源框架(我已经使用了很多)的竞争对手,它构建了一系列的函数库和组件。常见任务(CMS,CC处理,图像处理等)。

虽然毫无疑问有些“重新发明轮子”但我最终得到的轮子正是我需要做的工作。我理解它是如何工作的,亲密无法提供任何文档。

当然,有一天,一些未来的程序员可能会诅咒我的代码,因为我不喜欢使用他们喜欢的图书馆 - 但坦率地说 - 我只是不在乎。我是为ME写的,它完成了我需要的东西并且做得很好。我在这个过程中也学到了很多东西。

已经说过,通过编写自己的框架,您不会自动使您的客户/同事受到伤害。公共框架往往没有真正的方向,所以他们倾向于大量膨胀,试图让每个人都开心。这种臃肿意味着学习更多,更多可能出错。您的框架将满足更小的要求,并且与更成熟的公共文档相比,良好的文档可以更容易理解和设置。

我说去吧,生活在边缘一点点。也许在5年后你会发布下一个“Mach-II”或者其他什么,我们都可以讨厌它。

答案 1 :(得分:8)

通常情况下,我会惊慌失措并建议不要再将另一个网络MVC框架带入世界,但值得注意的是,我们的主持人Joel和Jeff对此事有另一种看法:

来自Joel:In Defense of Reinventing the Wheel 来自杰夫:Don't Reinvent the Wheel

最后一个想法:如果这是一个单人项目,那么你只会对这个选择产生影响。如果涉及开发长寿命产品的团队,我的抵抗力就会飙升。如果你自己动手,你可能会对团队和客户造成伤害。

答案 2 :(得分:5)

你会发现CakePHP特别具有“侵入性”。恕我直言,你应该使用轻量级框架或编写自己的框架。我通常不会建议你自己编写这类东西,但是当你处理软件时,你无法改变它有时候是最好的解决方案。此外,PHP中的控制器并不是一件难以写入的事情,因此如果您使用的预制解决方案太重或者不适合您当前的约束,您有时会不必要地过度复杂化解决方案。

对于轻量级MVC框架,我强烈推荐CodeIgniter

答案 3 :(得分:3)

车轮改造很糟糕。使用像Zend Framework这样经过测试的框架,除非你有一个非常非常特殊的理由不这样做。

答案 4 :(得分:2)

这取决于你的任务。一些琐碎的任务已经有了很好的解决方案,但有时候修复bug或者为你的需求提供解决方案比编写自己的更难。

无论如何,当你开始使用框架时 - 你必须花一些时间来学习它。有时写作比学习更快。

只需谷歌了解您需要的解决方案,找到一些成熟的,查看其功能,阅读开放的错误并决定是否要使用它。这就是我没有详细说明的任务我能告诉你的全部内容。

答案 5 :(得分:2)

  

问题是系统当前正在使用,我无法更改界面(它在框架中:s)还有一些我需要自己处理的事情,如密码生成,登录和用户级别。< / p>      

我将不得不慢慢地工作,如果我使用其中一个现成的框架,我不确定我是否能够这样做。

不知道你的情况的细节,我会说系统当前正在运行的事实会使一个通用的MVC框架难以集成。

话虽如此,许多MVC框架由可用作独立实体的模块化组件组成。您可以在项目中使用这些框架的某些功能。

用户身份验证,会话管理和密码处理是一个特别的领域,如果您在该领域拥有丰富的经验,则应该从头开始构建。

答案 6 :(得分:1)

开发框架并非易事,顺便说一下,您应该不断编写代码,测试,修补,测试和开发新功能。 因此,如果您不打算将其作为开源软件,那么对于拥有庞大的测试人员开发人员社区来说,这是一个好主意,您不应该考虑重新发明轮子。 这是圆的,它旋转得很好,所以选择最适合你需求的,并从社区的编码和测试中获利。

祝福

答案 7 :(得分:1)

问题是陈旧的,但仍然有效。 就个人而言,我是一个“从头开始”的人。我喜欢节省时间,但不是全部费用。所以我可以互换使用框架。这意味着我在任何框架之外的TDD流程中创建我的所有业务类/规则,然后将它们集成到一个框架中,该框架允许将我的工作与标准服务和库。但我的工作并没有与他们联系在一起。它们分离且快速。

更直接地回答这个问题。我创建了自己的CMS。而且我可以告诉你,如果你想了解某些事情,就要创造属于自己的东西。即使你永远不会分享它。您最终会更好地了解其他系统,这将使您更容易选择一个。然后你可能再也不想使用另一个了。但这通常发生在一些修改之后:)

所以是创造你自己的,但研究其他人。

相关问题