【问题标题】:Need to run our legacy application in Laravel as we refactor在我们重构时需要在 Laravel 中运行我们的遗留应用程序
【发布时间】:2015-12-21 15:41:56
【问题描述】:

我们想改用 Laravel,但我们已经有了一个完整的单入口点自定义应用程序。我们重构的第一步是将整个遗留应用程序放在一个名为“legacy”的顶级根文件夹中。遗留应用程序可以通过几行代码轻松初始化和运行,我们已经在 laravel 中对此进行了测试,并且运行良好。

问题在于,一开始 Laravel 只会成为单一入口点,并且在进一步的重构完成之前没有任何东西可以路由到。所以在主 index.php 文件中,我们希望 Laravel 有某种逻辑,

“如果我没有任何要路由的内容,请加载并运行旧版应用程序以完成请求。”。这样,当我们重构片段并提供路由时,Laravel 可以相应地处理我们添加的新片段,并且总是依靠我们的遗留应用程序来完成 Laravel 尚未设置的任何剩余工作,因为我们重构了新组件。我们也将包括我们在 Laravel 中的库代码。

关于如何实现这一目标的任何建议?有没有办法检查 Laravel 框架以查看它是否可以成功地将请求路由到任何地方或检查 404 然后调用我们的应用程序?我们需要同时运行这两个程序,直到我们执行完整的重构,这可能需要一段时间。

我们的应用程序是单一入口点,可以轻松放入其他应用程序或框架中。

【问题讨论】:

  • 我会在开发环境中将重构与您的遗留应用程序完全分开。如果出现任何问题,用户不会受到影响,因此可以进行重构而减少麻烦。
  • 设置 2 个服务器(或子域),一个开发和一个生产。让他们两个都运行一个 git。当您确信代码正常时,仅在开发和合并到生产中工作。小的增量步骤。
  • 你将如何在这样一个双核应用程序上使用 Sessions?

标签: php laravel


【解决方案1】:

绝对同意评论者的观点,你需要一个测试环境和生产环境。在我的脑海中,我想你会做这样的事情:

 $request = Illuminate\Http\Request::capture();
 $routes = [
     'route',
     'route2',
     'route3',
     'route4',
 ];
 if (in_array($request->url(), $routes) {
      // do whatever you are doing to route to your legacy project
 } else {
      $response = $kernel->handle(
           $request = Illuminate\Http\Request::capture()
      );

      $response->send();

      $kernel->terminate($request, $response);
 }

然后,当您将路由添加到您的 routes.php 时,您将在此处添加它们。它的限制是您不能在 laravel 和您的旧应用程序中使用相同的 URL 发布请求和获取请求。

另外,我没有对此进行测试。只是一个理论。

【讨论】:

    猜你喜欢
    • 2012-02-12
    • 2015-09-10
    • 2011-05-21
    • 1970-01-01
    • 2010-12-12
    • 2012-04-25
    • 2011-05-12
    • 1970-01-01
    • 2016-01-07
    相关资源
    最近更新 更多