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

我有一个很大的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框架由于其内部结构而使此任务更容易?

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

更好的方法

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

确保您遵循SOLID principles
将业务逻辑与表示和数据库抽象分离
开始为代码中真正阴暗的部分添加单元测试
重构,重构,重构

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

Laravel 5错误报告抑制 - php

在Laravel 4中,抑制E_NOTICE消息很容易;我似乎无法做到这一点,因为如果我添加error_reporting(E_ALL ^ E_NOTICE) 它只是被覆盖的任何地方。这似乎发生在这里:(index.php)$response = $kernel->handle( $request = Illuminate\Http\Request::…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

Laravel-使用雄辩的语言在开始日期和结束日期之间选择行 - php

我想将此查询转换为雄辩的laravel,select * from schedule where (now() between start_date and end_date); 我尝试使用whereBetween,但是出现了一些错误。$schedule = Schedule::whereBetween(Carbon::now(), ['start…

PHP mysqli获取查询返回的第一行的值 - php

我正在使用mysqli从数据库中获取某些数据。我正在使用的查询已设置为仅从数据库返回一行。有没有一种方法可以在不使用while循环的情况下获取该行的值?我知道一个while循环对于返回多于一行的行很有用,但是如果不需要while循环,我想避免这种情况,因为不必要的代码是不好的编程。 参考方案 是的-您可以使用:$row = $result->fetch…