index.php
tạo cá thể ứng dụng ( \Magento\Framework\App\Http
) bằng cách sử dụng objectManager (được tạo trước đó trong bootstrap) và phương thức gọi launch
.
Ví dụ ứng dụng http thực hiện định tuyến ban đầu: phải mất phần đầu tiên của url để tìm ra khu vực nào sẽ được tải (admin / frontend / rest / ...).
Khi khu vực được xác định, cấu hình cho khu vực đó được tải (không giống như Magento 1 nơi tất cả cấu hình đã được tải).
Sau đó, các đối tượng ứng dụng gọi Magento\Framework\App\FrontControllerInterface::dispatch
của khu vực được yêu cầu. Bộ điều khiển phía trước thực hiện định tuyến giống như trong Magento 1: tất cả các bộ định tuyến được lặp để phù hợp với yêu cầu. Bộ định tuyến phù hợp với thể hiện trả về yêu cầu của ActionControll khớp với FrontController
. Quá trình này hiệu quả hơn vì chỉ các bộ định tuyến của một khu vực được sử dụng (bộ định tuyến quản trị không được sử dụng ở lối vào). Tất cả các hành vi phụ đã được chuyển từ bộ điều khiển phía trước để plugins
của FrontController
và điều khiển hành động.
Khi FrontController
có phiên bản của bộ điều khiển hành động, nó gọi dispatch
nó. Bộ điều khiển hành động thực hiện nhiệm vụ của nó và trả về thể hiện của một số triển khai ResultInterface
(như trang, chuyển hướng, ...).
FrontController
chỉ cần trả về ResultInterface
Trường hợp ứng dụng biểu hiện phản hồi.
Tôi đã trình bày về vấn đề này tại Meet Magento NL: http://www.sl slideshoware.net/Dutchento/anton-kril-mm15nl