Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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

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 重构时需要在Laravel中运行遗留应用程序_Php_Laravel - Fatal编程技术网

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

Php 重构时需要在Laravel中运行遗留应用程序,php,laravel,Php,Laravel,我们想切换到使用Laravel,但我们已经有了一个完整的单入口点定制应用程序。重构的第一步是将整个遗留应用程序放在名为“遗留”的顶级根文件夹中。遗留应用程序可以很容易地初始化和运行,只需几行代码,我们已经在laravel内部对此进行了测试,效果良好 问题是,从一开始,Laravel将只是一个单一的入口点,在进一步的重构完成之前,没有任何东西可供选择。因此,在main index.php文件中,我们希望Laravel具有某种逻辑 “如果我没有路由到的任何内容,请加载并运行遗留应用程序以完成请求。”

我们想切换到使用Laravel,但我们已经有了一个完整的单入口点定制应用程序。重构的第一步是将整个遗留应用程序放在名为“遗留”的顶级根文件夹中。遗留应用程序可以很容易地初始化和运行,只需几行代码,我们已经在laravel内部对此进行了测试,效果良好

问题是,从一开始,Laravel将只是一个单一的入口点,在进一步的重构完成之前,没有任何东西可供选择。因此,在main index.php文件中,我们希望Laravel具有某种逻辑

“如果我没有路由到的任何内容,请加载并运行遗留应用程序以完成请求。”。通过这种方式,当我们重构部件并提供路由时,Laravel可以处理我们相应添加的新部件,并且总是依靠我们的遗留应用程序来完成Laravel在中重构新组件时没有设置的任何剩余工作。我们还将在Laravel中包含我们的库代码

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


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

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

 $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发送请求和获取请求


而且,我没有测试这个。只是一个理论。

我会在开发环境中完全独立于传统应用程序进行重构。如果出现任何问题,用户都不会受到影响,因此可以进行重构,而无需太多麻烦。设置2个服务器(或子域)、一个开发人员和一个生产人员。让他们两个都有机会。只有在确信代码正常的情况下,才能在开发环境中工作并合并到生产环境中。小的增量步骤。在这样一个双核应用程序上,您将如何处理会话?