Sử dụng DIC của Symfony làm thành phần độc lập is possible nhưng bạn phải làm nhiều việc "theo cách thủ công" (vì bạn không định sử dụng toàn bộ Khung công tác Symfony ngay từ đầu). Có thể bạn sẽ không nhận được nhiều việc sử dụng DIC với tất cả những thứ kế thừa đó.
Nếu bạn muốn đi đường dẫn này, tôi sẽ xem xét việc chọn một thành phần khác trước (như HttpFoundation và HttpKernel).
Vì @Cerad đề xuất bạn có thể bao gồm mã cũ trong Symfony. Có một cái nhìn tại IngewikkeldWrapperBundle bó. Bạn không thể sử dụng nó như là nhưng nó có thể cung cấp cho bạn một số ý tưởng.
Có cách thứ ba.
Bạn có thể quyết định triển khai mọi tính năng mới trong ứng dụng Symfony. Hơn nữa, bạn có thể làm cho cả ứng dụng cũ và Symfony cùng tồn tại. Ở cấp độ máy chủ (ví dụ: Nginx), bạn có thể ủy quyền URL cũ cho ứng dụng cũ và tất cả các URL được di chuyển sang ứng dụng Symfony2. Trong trường hợp của tôi, kịch bản này là lựa chọn tốt nhất và được chứng minh là đang hoạt động. Tuy nhiên, chúng tôi đã cam kết từ bỏ phát triển ứng dụng cũ (vì vậy mọi tính năng mới hoặc thay đổi phải được phát triển trong ứng dụng Symfony2).
Edit: đây là cách bạn có thể khởi động hạt nhân Symfony trong một ứng dụng di sản và gửi một sự kiện (mà là cần thiết cho các bức tường lửa):
$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);
Nguồn
2012-04-16 17:45:36
Tôi không thể nói nếu nó có thể hay không ... Tất nhiên là vậy, nhưng có đáng không? Để thực hiện các thùng chứa dịch vụ, hãy xem xét bạn sẽ phải thực hiện hạt nhân Symfony2, đó là cốt lõi của khung công tác. – AlterPHP
Nếu không có bất kỳ thông tin nào về cấu trúc của ứng dụng cũ thì không thể trả lời câu hỏi này, ngoại trừ việc nói rằng có thể không có mã OOP không có viết lại chính. – GordonM
Tôi đã làm một cái gì đó như thế này. Tôi sử dụng S2 thường xuyên để có được một hành động điều khiển S2. Từ bộ điều khiển, tôi đã gọi mã khởi tạo kế thừa của mình và sau đó được gọi là bộ điều khiển. Rất nhiều hack nhưng nó hoạt động tốt. Tôi không nghĩ rằng bạn sẽ có nhiều may mắn nhận được một đối tượng phiên S2 được cấu hình đúng cách mà không làm một cái gì đó như thế này. – Cerad