Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将非框架PHP项目移植到Laravel4.x_Php_Laravel_Frameworks_Laravel 4 - Fatal编程技术网

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

将非框架PHP项目移植到Laravel4.x,php,laravel,frameworks,laravel-4,Php,Laravel,Frameworks,Laravel 4,我有一个很大的PHP项目,其中我没有使用任何框架(也没有使用MVC模式),我想逐步将它移植到Laravel上,几乎没有停机时间。 我正在寻找使已移植到Laravel的代码片段的迁移透明化的方法,同时保留功能性较旧的普通PHP代码。 例如,Laravel使用类和方法(例如Input::GET())来“覆盖”超全局变量($\u GET、$\u POST等)。当然,我的普通PHP项目直接使用超全局变量。如何克服Laravel下的这些“不兼容性”,而不必立即重写所有PHP代码?否则,如果您认为这项任务太

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

例如,Laravel使用类和方法(例如Input::GET())来“覆盖”超全局变量($\u GET、$\u POST等)。当然,我的普通PHP项目直接使用超全局变量。如何克服Laravel下的这些“不兼容性”,而不必立即重写所有PHP代码?

否则,如果您认为这项任务太难,是否有任何PHP框架,由于其内部结构,可以使这项任务更容易

更新:
在拉威尔,超球体的使用仍然是可能的。我得到了一个隐蔽的错误:Laravel在内部将error_reporting设置为E_ALL,并显示一个定制的错误堆栈跟踪页面,即使是针对PHP E_NOTICE,但没有明确指定错误级别(这是一个通知错误),即使这是由PHP error reporting message engine默认完成的。

,我认为这种“部分沉默”行为对于任何试图将其代码移植到他们的框架上的PHP开发人员来说通常是误导的。博士 不要这样做

常见的误解 如果您有一个现有的项目,那么将其移植到一个框架上不会给您带来任何好处。框架是而不是某种神奇的调味汁,它奇迹般地使代码变得更好或使站点运行更快

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

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

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

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

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

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

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

  • 一定要跟上
  • 将业务逻辑与表示和数据库抽象分开
  • 开始为代码中真正可疑的部分添加单元测试
  • 重构,重构,重构
p.S.:列出的材料可能会有所帮助


您仍然可以在您的Laravel应用程序中使用PHP superglobals($\u GET,$\u POST等)。谢谢,您的评论引导我找到了解决方案。我相应地更新了我的问题。你的项目结构如何?您是否将表示层与业务逻辑层分离?@DotMat-Laravel故意设置错误级别,因为您通过app.php中的配置文件进行控制。打开/关闭调试并根据需要使用。您还可以将不同的错误记录为needed@theshiftexchange-是的,但问题是:为什么不在默认堆栈跟踪页面中报告错误级别??胡说。开发人员不应该已经做了所有这些吗。这些都是常见的编码实践,不过值得一提的是,它们对回答作者的问题没有帮助。@sidneydobber很多人没有按照他们应该做的去做。这些天来,我倾向于假设自己不遵守最佳实践,但也许这只是我厌倦了。@Dan Lugg你说得对!只是出现了更多的开发人员,优秀的开发人员需要向他们展示干净、清晰的代码,并进行大量的积极强化!;)谢谢你的意见(以及你的最后一个链接),这让我对这个问题有了新的认识。现在我还没有决定将项目逐步移植到MVC框架的想法。如果向后兼容性不是很难达到,那么现代框架强加的MVC结构可能会对保持最佳编码实践有很大帮助。对我来说,这就是重点:强迫自己做好代码,避免对自己的技能和资源过于自信,同时确保未来的灵活性。事实上,这仍然是一个大问题。