Symfony의 DIC를 독립 실행 형 구성 요소로 사용하는 경우 is possible 처음부터 전체 Symfony Framework를 사용할 계획이 아니므로 많은 것들을 "수동으로"해야합니다. DIC를 기존의 모든 것들로 많이 사용하지 않을 것입니다.
이 경로를 사용하려면 먼저 다른 구성 요소 (HttpFoundation 및 HttpKernel)를 선택하는 것이 좋습니다.
@Cerad는 Symfony에서 기존 코드를 래핑 할 수도 있다고 제안했습니다. IngewikkeldWrapperBundle 번들을 확인하십시오. 있는 그대로 사용할 수는 없지만 아이디어를 줄 수도 있습니다.
세 번째 방법이 있습니다.
모든 새로운 기능을 Symfony 앱에 구현하기로 결정할 수 있습니다. 기존 애플리케이션과 Symfony 애플리케이션을 함께 사용할 수 있습니다. 서버 수준 (예 : Nginx)에서는 레거시 URL을 기존 앱으로 프록시하고 모든 이전 된 URL을 Symfony2 앱으로 프록시 처리 할 수 있습니다. 내 경우에는이 시나리오가 최선의 선택이었고 작동하는 것으로 나타났습니다. 그러나, 우리는 기존의 앱 개발을 포기할 것을 약속했습니다 (그래서 모든 새로운 기능이나 변경 사항은 Symfony2 앱에서 개발되어야했습니다).
편집 :
$kernel = new \AppKernel('dev', true);
$kernel->boot();
$request = Request::createFromGlobals();
$request->attributes->set('is_legacy', true);
$request->server->set('SCRIPT_FILENAME', 'app.php');
$container = $kernel->getContainer();
$container->enterScope('request');
$container->get('request_stack')->push($request);
$container->set('request', $request);
$event = new GetResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
$eventDispatcher = $container->get('event_dispatcher');
$eventDispatcher->dispatch('kernel.request', $event);
나는 가능하지 않다고 말할 수는 없지만 ... 물론 그럴 가치가 있습니까? 서비스 컨테이너를 구현하려면 프레임 워크의 핵심 인 Symfony2 커널을 구현해야한다고 생각하십시오. – AlterPHP
레거시 앱의 구조에 대한 정보가 없으면이 질문에 답하는 것이 불가능합니다. 단, 주요 수정없이 OOP 이외의 코드에 대해서는 가능하지 않을 수 있습니다. – GordonM
나는 이런 식으로했다. 정기 S2를 사용하여 S2 컨트롤러 작업을 시작했습니다. 컨트롤러에서 나는 레거시 초기화 코드를 호출 한 다음 컨트롤러라고 불렀다. 아주 많은 해킹이 있지만 괜찮습니다. 나는 당신이 이처럼 뭔가를하지 않고 제대로 설정된 S2 세션 객체를 얻는 것이 많은 행운을 가져올 것이라고 생각하지 않는다. – Cerad