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

Php 我应该使用框架还是编写自己的MVC?,php,model-view-controller,zend-framework,cakephp,refactoring,Php,Model View Controller,Zend Framework,Cakephp,Refactoring,我有一个项目,目前正在各地,我正在考虑使其成为MVC 问题是,该系统目前正在使用,我无法更改界面(它在帧中):还有一些事情我需要自己处理,例如密码生成、登录和用户级别 我已经有了MVC的模型端,所以我想知道是否值得使用像Zend framework或CakePHP这样的框架,或者仅仅编写我自己的视图和控制器来解决这个问题 我将不得不慢慢地处理这个问题,如果我使用一个现成的框架,我不确定我是否能够做到这一点。你会发现CakePHP特别具有“侵入性”。为此,您应该使用轻量级框架或编写自己的框架。我通

我有一个项目,目前正在各地,我正在考虑使其成为MVC

问题是,该系统目前正在使用,我无法更改界面(它在帧中):还有一些事情我需要自己处理,例如密码生成、登录和用户级别

我已经有了MVC的模型端,所以我想知道是否值得使用像Zend framework或CakePHP这样的框架,或者仅仅编写我自己的视图和控制器来解决这个问题


我将不得不慢慢地处理这个问题,如果我使用一个现成的框架,我不确定我是否能够做到这一点。

你会发现CakePHP特别具有“侵入性”。为此,您应该使用轻量级框架或编写自己的框架。我通常不建议你自己写这类东西,但当你处理软件时,你不能改变它有时是最好的解决方案。此外,PHP中的控制器并不难编写,因此,如果您使用的预制解决方案过于繁重,或者不适合当前的约束条件,那么有时可能会导致不必要的过度复杂化


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

车轮改造是不好的。除非你有非常特别的理由不使用Zend framework等经过测试的框架。

通常,我会害怕地退缩,建议不要再将另一个web MVC框架引入世界,但公平地说,我们的主持人Joel和Jeff对此有不同的看法:

乔: 杰夫:


最后一个想法:如果是一个人的项目,那么这个选择只会影响你自己。如果有一个开发长寿命产品的团队参与进来,我的阻力就会增加。如果你自己动手,可能会对团队和客户造成伤害。

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

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

尽管毫无疑问有些人“重新发明了轮子”,但我最终得到的轮子正是我工作所需要的。我理解它是如何与任何文档都无法提供的亲密关系一起工作的

当然,有一天,一些未来的程序员可能会因为我的代码而诅咒我,因为我没有使用他们最喜欢的库——但坦率地说——我根本不在乎。我为我写的,它做了我需要的,它做得很好。在这个过程中我也学到了很多

已经说过,您编写自己的框架并不会自动对您的客户/同事造成伤害。公共框架往往没有真正的方向,因此它们往往会大量膨胀,试图让每个人都开心。这种膨胀意味着需要学习的东西越多,出错的地方就越多。您的框架将满足更小的需求集,并且具有良好的文档,与更为成熟的公共框架相比,更易于理解和设置


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

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

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

只需在谷歌上搜索您需要的解决方案,找到一些成熟的解决方案,查看它们的功能,阅读打开的bug,然后决定是否要使用它。没有详细的任务,我只能告诉你这些

问题是,该系统目前正在使用,我无法更改界面(它在帧中):还有一些事情我需要自己处理,例如密码生成、登录和用户级别

我将不得不慢慢地进行这项工作,如果我使用一个现成的框架,我不确定是否能够做到这一点

由于不了解您的具体情况,我想说的是,系统当前正在运行这一事实将使通用MVC框架难以集成

尽管如此,许多MVC框架都是由模块化组件组成的,可以作为独立实体使用。您可能能够在项目中使用这些框架的某些特性


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

开发一个框架不是一件容易的任务,顺便说一句,您应该编码、测试、修补、更多测试并不断开发新功能。 因此,如果您不打算将其开源,这对于拥有一个庞大的测试人员开发社区来说是一个好主意,那么您不应该考虑重新发明轮子。 它是圆形的,旋转良好,所以选择最适合您需要的,并从社区数月的编码和测试中获利


最美好的祝愿这个问题由来已久,但仍然有效。 就我个人而言,我是一个“白手起家”的人。我喜欢节省时间,但不是不惜一切代价。所以我可以互换使用框架。这意味着我在任何框架之外的TDD流程中创建了我的所有业务类/规则,然后将它们集成到一个允许将我的工作与标准服务和库合并的框架中。但我的工作与他们无关。它们是解耦和快速的

为了更直接地回答这个问题。我创建了自己的CMS。及