如何从 Laravel 应用程序中 bootstrap 一个 Laravel 应用程序?
How can I bootstrap a Laravel application from within a Laravel application?
我正在尝试构建概念验证来解决以下问题:
我需要将 Kohana 应用程序重构到 Laraval 中,但我们不断添加新功能并开发应用程序。所以 Kohana 和 Laravel 代码库必须一起工作一段时间。
为了概念验证,我采用了两个 Laravel 应用程序,其中一个模拟了旧的 Kohana 应用程序。
我想到的一个解决方案是在 Laravel 应用程序中创建一个中间件或服务提供商,以检查路由是否可以在此 Laravel 中解析。在无法解析路由的情况下,应 bootstrap 请求其他应用程序执行请求。
当我尝试从第一个中间件 class 中 bootstrap 第二个 Laravel 时,出现以下错误:
Target class [App\Http\Middleware\Illuminate\Contracts\Http\Kernel] does not exist.
在执行以下行时:
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
中间件处理函数:
public function handle($request, Closure $next)
{
$routes = Route::getRoutes();
try {
//route exists
$routes->match($request);
return $next($request);
}
catch (\Symfony\Component\HttpKernel\Exception\NotFoundHttpException $e){
//route doesn't exist
// define('LARAVEL_START', microtime(true));
require_once env('LARAVEL_FILE_PATH').'/vendor/autoload.php';
$app = require_once env('LARAVEL_FILE_PATH').'/bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
$response->send();
$kernel->terminate($request, $response);
exit;
}
}
有没有人知道出了什么问题或者可能有其他解决方案的建议?
问题是由去命名空间引起的。
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
应该是
$kernel = $app->make(\Illuminate\Contracts\Http\Kernel::class);
也是如此
$request = Illuminate\Http\Request::capture()
我正在尝试构建概念验证来解决以下问题: 我需要将 Kohana 应用程序重构到 Laraval 中,但我们不断添加新功能并开发应用程序。所以 Kohana 和 Laravel 代码库必须一起工作一段时间。
为了概念验证,我采用了两个 Laravel 应用程序,其中一个模拟了旧的 Kohana 应用程序。
我想到的一个解决方案是在 Laravel 应用程序中创建一个中间件或服务提供商,以检查路由是否可以在此 Laravel 中解析。在无法解析路由的情况下,应 bootstrap 请求其他应用程序执行请求。
当我尝试从第一个中间件 class 中 bootstrap 第二个 Laravel 时,出现以下错误:
Target class [App\Http\Middleware\Illuminate\Contracts\Http\Kernel] does not exist.
在执行以下行时:
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
中间件处理函数:
public function handle($request, Closure $next)
{
$routes = Route::getRoutes();
try {
//route exists
$routes->match($request);
return $next($request);
}
catch (\Symfony\Component\HttpKernel\Exception\NotFoundHttpException $e){
//route doesn't exist
// define('LARAVEL_START', microtime(true));
require_once env('LARAVEL_FILE_PATH').'/vendor/autoload.php';
$app = require_once env('LARAVEL_FILE_PATH').'/bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
$response->send();
$kernel->terminate($request, $response);
exit;
}
}
有没有人知道出了什么问题或者可能有其他解决方案的建议?
问题是由去命名空间引起的。
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
应该是
$kernel = $app->make(\Illuminate\Contracts\Http\Kernel::class);
也是如此
$request = Illuminate\Http\Request::capture()