我有一个大型 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
不要这样做。
常见误解
如果你有一个现有的项目,那么将其移植到框架上不会给你带来任何好处。框架不是某种魔法酱,它奇迹般地使代码变得更好或使网站运行得更快。
相反,框架是工具,(据说)可以通过已经完成的“常见任务”来帮助您在更短的时间内编写项目。此外,作为一个副作用,在项目中停止使用框架是极其困难的(例如,如果它停止使用),因为现在所有代码都紧密地焊接到框架上。
这就是您目前遇到这些问题的原因:
-
How can I overcome these "uncompatibilities" under Laravel without having to rewrite instantly all my PHP code?
你不能。完全按照 Laravel 框架的要求重写它,否则它将无法工作。
-
(..) is there any PHP framework that, thanks to its internal structure, would make this task easier?
不,没有。所有流行的框架都会要求您重写代码,以便将其绑定(bind)到框架。
更好的方法
但是您已经有了一个可以运行的应用程序。如果您专注于改进现有代码库,您将获得更好的结果:
- 请务必关注 SOLID principles
- 将业务逻辑与表示和数据库抽象分开
- 开始为代码中真正可疑部分添加单元测试
- 重构,重构,重构
P.S.: the materials listed here wold probably help
关于php - 将非框架 PHP 项目移植到 Laravel 4.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23467424/