将非框架PHP项目移植到Laravel 4.x.

时间:2014-05-05 07:47:25

标签: php laravel frameworks laravel-4

我有一个很大的PHP项目,其中我没有使用任何框架(也没有使用MVC模式),我想逐渐将它移植到Laravel上(几乎没有停机时间)。 我正在寻找一些方法,使已经移植到Laravel的代码片段的迁移变得透明,同时保留了功能较旧的普通PHP代码。

例如,Laravel"覆盖"使用类和方法的超级全局($ _GET,$ _POST等)(例如Input :: get())。我的普通PHP项目当然直接使用超全局。我怎样才能克服这些"不兼容性"在Laravel下,不必立即重写我的所有PHP代码?

否则,如果您认为这个任务太难了,是否有任何PHP框架,由于其内部结构,将使这项任务更容易?

更新:
在laravel中仍然可以使用超全球。我得到一个偷偷摸摸的错误:Laravel内部将error_reporting设置为E_ALL并显示自定义错误堆栈跟踪页面,即使对于PHP E_NOTICE,但是没有明确指定错误级别(它是NOTICE错误),甚至如果这是由PHP错误报告消息引擎默认完成的。

让我说,对于Laravel核心开发人员,我认为这是部分沉默"对于试图将代码移植到其框架上的任何PHP开发人员而言,这种行为通常会产生误导。

1 个答案:

答案 0 :(得分:25)

TL; DR

不要这样做。

常见的误解

如果您有一个现有项目,那么在框架上嫁接它将不会给您带来任何好处。框架某些魔术酱,奇迹般地使代码更好或使网站运行更快。

相反,框架是工具,(据说)通过执行"常见任务来帮助您在更短的时间内编写项目。已经完成了。另外,作为副作用,在项目中停止使用框架是非常困难的(例如,如果它停止使用),因为现在所有代码都紧密地焊接到框架上。

这就是您目前遇到这些问题的原因:

  •   

    我如何克服这些"不兼容性"在Laravel下,无需立即重写我的所有PHP代码?

    你做不到。完全按照Laravel框架的要求重写它,或者它不会起作用。

  •   

    (..)是否有任何PHP框架,由于其内部结构,将使这项任务更容易?

    不,没有。所有流行的框架都希望您重写代码,以便它绑定到框架。

更好的方法

但是你已经有了一个有效的应用程序。如果您专注于改进现有代码库,那么您将获得更好的结果:

  • 请务必遵循SOLID principles
  • 将您的业务逻辑与表示和数据库抽象分开
  • 开始为代码的非常阴暗部分添加单元测试
  • 重构,重构,重构
  

P.S。:列出的材料here可能会有所帮助