我有一个很大的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开发人员而言,这种行为通常会产生误导。
答案 0 :(得分:25)
不要这样做。
如果您有一个现有项目,那么在框架上嫁接它将不会给您带来任何好处。框架不某些魔术酱,奇迹般地使代码更好或使网站运行更快。
相反,框架是工具,(据说)通过执行"常见任务来帮助您在更短的时间内编写项目。已经完成了。另外,作为副作用,在项目中停止使用框架是非常困难的(例如,如果它停止使用),因为现在所有代码都紧密地焊接到框架上。
这就是您目前遇到这些问题的原因:
我如何克服这些"不兼容性"在Laravel下,无需立即重写我的所有PHP代码?
你做不到。完全按照Laravel框架的要求重写它,或者它不会起作用。
(..)是否有任何PHP框架,由于其内部结构,将使这项任务更容易?
不,没有。所有流行的框架都希望您重写代码,以便它绑定到框架。
但是你已经有了一个有效的应用程序。如果您专注于改进现有代码库,那么您将获得更好的结果:
P.S。:列出的材料here可能会有所帮助