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

2022-08-30 23:16:36

我有一个很大的PHP项目,其中我没有使用任何框架(也不是MVC模式),我想逐步将其移植到Laravel上,(几乎)没有停机时间。
我正在寻找使已经移植到Laravel的代码段的迁移透明化的方法,同时管理功能上较旧的纯PHP代码。

例如,Laravel使用类和方法“覆盖”超全局(_GET美元,_POST美元等)(例如输入::get())。我的普通PHP项目当然直接使用超全局。如何在Laravel下克服这些“不兼容”,而不必立即重写所有PHP代码?

否则,如果您认为此任务太困难,是否有任何PHP框架由于其内部结构而使此任务更容易?

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

让我说,对于Laravel核心开发人员来说,我认为这种“部分沉默”的行为通常对任何试图将他的代码移植到他们的框架上的PHP开发人员具有误导性。


答案 1

TL;DR

别这样。

常见误解

如果你有一个现有的项目,那么把它嫁接到一个框架上不会给你带来任何好处。框架不是某种神奇的酱汁,奇迹般地使代码更好或使网站运行得更快。

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

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

  • 如何在Laravel下克服这些“不兼容”,而不必立即重写所有PHP代码?

    你不能。完全按照Laravel框架的要求重写它,否则它将不起作用。

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

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

更好的方法

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

  • 确保你遵循坚实的原则
  • 将业务逻辑与表示和数据库抽象分开
  • 开始为代码中真正阴暗的部分添加单元测试
  • 重构、重构、重构

附言:这里列出的材料可能会有所帮助


答案 2

推荐