将现有应用程序迁移到的好的 PHP 框架是啥?

Posted

技术标签:

【中文标题】将现有应用程序迁移到的好的 PHP 框架是啥?【英文标题】:What is a good PHP framework for migrating an existing app to?将现有应用程序迁移到的好的 PHP 框架是什么? 【发布时间】:2011-10-13 18:41:56 【问题描述】:

我最近加入了一个 php 应用程序。应用程序中没有太多设计 - 有一个前端控制器,但是,视图、模型和控制器代码通常混合在一起。

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

是否有一个很好的框架,我可以只是一种插件,以便我可以使用模型库,然后也许稍后将更多的应用程序集成到框架中? Doctrine 会是一个很好的工具吗?还是应该只设置自己的模型而不依赖第三方库?

【问题讨论】:

【参考方案1】:

如果你有一个现有的 php 应用程序,那么将它迁移到某个框架是没有意义的。框架可以帮助您更快地开发项目——您已经拥有了一个。此时,在现有基础上添加框架只会使您的应用程序更复杂,而且很可能更慢。

您应该投资于重构(应用一些 OOP 原则,例如 SOLID)和记录现有代码,而不是试图找到一些神奇的框架。也许开始逐步添加一些单元测试。


附: Doctrine 是一个 ORM(1.x 实现了 activerectord ,2.x - 类似于 datamapper )。 ORM 适用于极度懒惰、被误导或不懂 SQL 的人。通过将现有的 SQL 查询移动到 ORM 代码中,您只会让它变慢。此外,您在迁移复杂查询时会遇到问题。只是不要这样做。

【讨论】:

我想研究一个框架的原因是其他为这个网站编写代码的开发人员没有考虑太多关于设计的问题。我认为一个框架也可能有助于执行编码标准。在我进行和重构的同时开发类可能会更好。 @MattMcCormick ,框架可能会强制执行一些结构,但您不应该依赖 php 框架来获得良好的标准或实践。他们都有缺陷。通常是选择较小的邪恶。相反,您应该阅读 Martin Fowler、Robert C. Martin 和 Misko Hevery 所写的东西。您可以先观看youtube 上的“清洁代码讲座”系列。 orm's 非常适合非常懒惰的人。 (这可以翻译为喜欢在他们的代码中修复更少的错误,并且对简单的 sql 进行更少重复编码的人)。授予 orm 并不是替换 sql 的全部解决方案,但在某些情况下,它可以节省大量编写应用程序的时间,我不会一直使用 orm,但在某些情况下它绝对是无价的 @bumperbox ,我也会很懒,只是推荐你一个comment我几天前写的。 @teresko 我很高兴同意您的观点,只是不同意您的评论。 “ORM 适合那些极度懒惰、被误导或不懂 SQL 的人。”我不是很懒惰,我不认为自己被误导了,而且我对 sql 了如指掌,但是当它是工作的最佳解决方案时,我选择使用 orm :)【参考方案2】:

我刚刚开始用 Kohana 重写一个网站,我对此非常满意。它看起来灵活而强大。它与 CodeIgniter 非常相似,但更现代一些(使用了更多最新的 PHP 功能)。

【讨论】:

1+ 用于 kohana。我现在已经将一些没有框架的网站转换为 kohana,它大大简化了代码库。 kohana 是一种按约定样式配置的框架,但确实能够在需要时覆盖所有约定。它非常适合现有代码,并且我能够一次替换部分站点,而不是整个重写和重新启动【参考方案3】:

如果您只想要 MVC(不是 HMVC 或更难的)框架来简单地采用现有应用程序,您应该使用 CodeIgniter。 ActiveRecords 很容易从现有的 sql 查询中重构。您甚至可以使用默认或手工制作的函数或类在其模型中构建查询。

但默认情况下,Codeigniter 对于困难或多命名空间的应用程序不够灵活。

【讨论】:

【参考方案4】:

我正在使用 Zend 和 Doctrine2 迁移站点。 该站点在任何意义上都不是 OOP,但它分为逻辑视图和 dal。迁移仍在进行中(新功能使用框架编码,现有功能仅在需要进行重大更改时才迁移)。

这两个框架都是非侵入性的,对我来说你得到的最有价值的东西就是标准化。

【讨论】:

以上是关于将现有应用程序迁移到的好的 PHP 框架是啥?的主要内容,如果未能解决你的问题,请参考以下文章

将 Aurora 数据迁移到 Redshift DWH 的好方法是啥?

将许多参数传递给控制器​​的好方法是啥?

将 nodejs 与 php 应用程序集成的建议

将 Cocoa 前端写入 Erlang 应用程序的好方法是啥?

迁移需要很长时间才能应用到数据库

防止 SQL 注入的好方法是啥? [复制]