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


Porting a non-framework PHP project to Laravel 4.x

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

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

否则,如果你认为这个任务太难了,有没有什么PHP框架,由于它的内部结构,可以使这个任务更容易?

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

让我说,对于Laravel核心开发者,我认为这种"部分沉默"的行为通常会误导任何试图将自己的代码移植到他们的框架上的PHP开发者。

TL;DR

不要这样做。

常见的误解

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

相反,框架是一种工具,(据说)可以帮助你在更短的时间内完成"常见任务"。此外,作为一个副作用,在项目中停止使用框架是极其困难的(例如,如果它停止使用),因为现在您的所有代码都紧密地焊接到框架上。

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

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

    你不能。按照Laravel框架的要求重写它,否则它将无法工作。

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

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

更好的方法

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

  • 确保你遵循坚实的原则
  • 将业务逻辑与表示和数据库抽象分离
  • 开始为代码中非常不显眼的部分添加单元测试
  • refactor, refactor, refactor

<子> 注::这里列出的材料可能会有帮助