Я пытаюсь следовать этому руководству до Миграция устаревших веб-приложений на Laravel.
Это моя ситуация:
У меня 2 веб-приложения под одним и тем же хостом, оба записаны в PHP
- one (унаследованная версия) представляет собой «пользовательский каркас»
- second представляет собой приложение Laravel 5.4
Моя цель состоит в том, чтобы обслуживать оба приложения только в приложении Laravel, поэтому моя уникальная точка входа для приложения - index.php
из Laravel.
. Как вы можете прочитать в статья, я пытаюсь запустить устаревшее приложение внутри Laravel App\Exceptions\Handler
public function render($request, Exception $exception) {
if( $exception instanceof NotFoundHttpException ) {
// pass to legacy framework - contents of index.php
die();
}
}
, когда устаревший маршрут не найден.
Я создал свой собственный App\Providers\LegacyServiceProvider
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class LegacyServiceProvider extends ServiceProvider
{
protected $defer = true;
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->singleton("LegacyApp", function ($app){
require_once base_path("legacy/index.php");
return;
});
}
}
добавлено в config/app.php
laravel файл конфигурации
// other providers
App\Providers\LegacyServiceProvider::class,
и теперь начинается самое интересное ... Это index.php
из устаревшее приложение
<?php
require_once __DIR__ ."/app/config/conf.php";
$oSession = new Session();
$oDb = new DbMedoo();
$dbCon = $oDb->dbConn();
include __DIR__ . '/app/routes.php';
app/config/conf.php
<?php
// Some definitions here
// ROUTING
$router = new AltoRouter();
// TWIG
$loader = new Twig_Loader_Filesystem(SITE_CONFIG_DIR . "../../src/App/views");
// Other stuff here
app/routes.php
file
<?php
// **************************************************
// **************** AltoRouter *****************
// **************************************************
$router->map( 'GET|POST', '/', 'home.php', 'home');
// Some other legacy routes here
и, наконец, простой home.php
"контроллер"
<?php
// Some initial checks here
$someModelClass = new SomeModelClass();
$anotherModelClass = new AnotherModelClass();
// some other logics here
$template = $twig->loadTemplate('home.twig');
echo $template->render(array(
'someVariables' => $someVariableToPass,
));
Как видите, я нет класса !!
END OF STORY!
Итак, когда я пытаюсь запустить устаревшее приложение в App\Exception\Handler
if( $exception instanceof NotFoundHttpException ) {
// pass to legacy framework
app()->make("LegacyApp");
die(); // prevent Laravel sending a 404 response
}
Эта ошибка выглядит как
(1/1) ReflectionException
Class LegacyApp does not exist
Предложения приветствуются
Кто-то здесь с такой же ситуацией? Как я мог сделать это без рефакторинга всей кодовой базы?
Спасибо за совет