index.php
menciptakan instance aplikasi ( \Magento\Framework\App\Http
) menggunakan objectManager (yang dibuat sebelum itu dalam bootstrap) dan metode panggilan launch
.
Contoh Aplikasi Http melakukan routing awal: dibutuhkan bagian pertama dari url untuk mencari tahu area mana yang harus dimuat (admin / frontend / rest / ...).
Ketika area ditentukan, konfigurasi untuk area itu dimuat (tidak seperti Magento 1 di mana semua konfigurasi dimuat).
Kemudian objek aplikasi memanggil Magento\Framework\App\FrontControllerInterface::dispatch
area yang diminta. Front Controller melakukan routing yang sama seperti pada Magento 1: semua router di-iterated untuk mencocokkan permintaan. Router yang cocok dengan permintaan mengembalikan instance dari ActionController cocok dengan FrontController
. Proses ini lebih efisien karena hanya router dari satu area yang digunakan (admin router tidak digunakan di frontend). Semua perilaku ekstra dipindahkan dari controller depan untuk plugins
dari FrontController
dan Controller Aksi.
Ketika FrontController
mendapat instance dari action controller, ia memanggilnya dispatch
. Kontroler tindakan melakukan tugasnya dan mengembalikan instance dari beberapa implementasi ResultInterface
(seperti halaman, redirect, ...).
FrontController
hanya kembali ResultInterface
ke Instance Aplikasi yang memberikan respons.
Saya melakukan presentasi tentang ini di Meet Magento NL:
http://www.slideshare.net/Dutchento/anton-kril-mm15nl