重构时需要在Laravel中运行我们的遗留应用程序



我们想切换到使用Laravel,但我们已经有了一个完整的单入口点自定义应用程序。重构的第一步是将整个遗留应用程序放在名为"legacy"的顶级根文件夹中。遗留应用程序可以很容易地初始化和运行,只需几行代码,我们已经在laravel中测试过了,它运行得很好。

问题是,首先,Laravel只会成为唯一的入口点,在完成进一步的重构之前,它没有任何可供选择的路径。因此,在主index.php文件上,我们希望Laravel具有某种逻辑,即

"如果我没有任何东西要路由到,加载并运行遗留应用程序来完成请求。"。这样,当我们重构部件并提供路由时,Laravel可以处理我们相应添加的新部件,并且在中重构新组件时,始终依靠遗留应用程序完成Laravel没有设置要做的任何剩余工作。我们还将在Laravel中包含我们的库代码。

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

我们的应用程序是一个单一的入口点,可以很容易地放入其他应用程序或框架中。

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

 $request = IlluminateHttpRequest::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 = IlluminateHttpRequest::capture()
      );
      $response->send();
      $kernel->terminate($request, $response);
 }

然后,当你将路由添加到routes.php时,你会在这里添加它们。它的局限性在于,你不能在laravel和你的传统应用程序中使用相同的URL进行发布请求和获取请求。

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

相关内容

最新更新