什么是一个适合迁移现有应用程序的好的PHP框架?

3

我最近加入了一个PHP应用程序开发团队。这个应用程序没有太多的设计,虽然有一个前端控制器,但视图、模型和控制器代码通常混在一起。

我想逐渐开始重构代码,首先将所有的SQL查询移动到适当的模型中。查看了几个框架后,似乎大多数框架都是在假设使用该框架从头开始开发应用程序的情况下设置的。

是否有一个好的框架可以直接插入其中,以便我可以使用模型库,然后或许稍后再将更多的应用程序整合到框架中?Doctrine是否是这样的工具?或者我应该自己设置模型,不依赖第三方库?

4个回答

4
如果您已经有一个现有的php应用程序,那么将其迁移到某个框架是没有意义的。框架可以帮助您更快地开发项目 - 您已经拥有一个。此时在现有基础上添加框架只会使您的应用程序更加复杂,并且很可能会变得更慢。
与其试图找到某些神奇的框架,不如投资于重构(应用一些OOP原则,如SOLID)和记录现有代码。也许开始逐步添加一些单元测试。

P.S. Doctrine是一个ORM(1.x实现了ActiveRecord,2.x类似于DataMapper)。ORM适用于那些极度懒惰、误导或不理解SQL的人。将现有的SQL查询移动到ORM代码中只会使它变得更慢。此外,当迁移复杂的查询时,您将遇到问题。不要这样做。


我猜测寻找框架的原因是其他编写此网站的开发人员并没有考虑设计方面。我认为使用框架可能有助于强制执行编码标准。按需开发类并进行重构可能会更好。 - Matt McCormick
@MattMcCormick,框架可能会强制实施一些结构,但您不应该指望PHP框架具有良好的标准或实践。它们都是有缺陷的。通常情况下是选择“较小的恶”。相反,您应该阅读Martin Fowler、Robert C. Martin和Misko Hevery撰写的内容。您可以从观看youtube上的“Clean Code Talks”系列开始。 - tereško
ORM 对那些极度懒惰的人来说非常好。这可以解释为喜欢减少代码错误和简化 SQL 重复编码的人。当然,ORM 并不是完全替代 SQL 的万能方案,但在某些情况下,它可以节省很多编写应用程序的时间。我并不总是使用 ORM,但在某些情况下,它绝对是无价之宝。 - bumperbox
@bumperbox,我也会懒一点,只是给你提供一个我几天前写的评论 - tereško
@teresko,我非常赞同你的观点,但我不同意你的评论:“ORM是为那些极度懒惰、误导或不理解SQL的人准备的。” 我并不是极度懒惰的人,也不认为自己被误导了,而且我对SQL非常了解,但当ORM是最好的解决方案时,我会选择使用ORM :) - bumperbox

1

我刚开始用Kohana重写一个网站,对它感到非常满意。它看起来既灵活又强大。它非常类似于CodeIgniter,但更加现代化(使用了更多最新的PHP特性)。


对于Kohana来说,我已经成功将许多没有框架的网站转换到了Kohana上,这大大简化了代码库。Kohana是一个约定式配置的框架,但是当需要时,它确实有能力覆盖所有约定。它很好地适应了现有的代码,我已经能够逐步替换网站的部分内容,而不是整个重写和重新发布。 - bumperbox

0
如果您只想使用MVC(而不是HMVC或更困难的框架)来简化现有应用程序的采用,那么您应该选择CodeIgniter。ActiveRecords非常容易从现有的SQL查询中进行重构。您甚至可以在其模型中使用默认或手工制作的函数或类来构建查询。
但是,默认情况下,Codeigniter对于复杂或多命名空间应用程序来说并不足够灵活。

0
我正在使用Zend和Doctrine2迁移一个网站。 该网站在任何意义上都不是面向对象的,但它被分为逻辑视图和数据访问层。迁移仍在进行中(新功能使用框架编码,只有在需要大的更改时才会迁移现有功能)。
这两个框架都是非侵入性的,对我来说最有价值的是标准化事物。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接