index.php\Magento\Framework\App\HttpErstellt die Anwendungsinstanz ( ) mithilfe von objectManager (das zuvor in bootstrap erstellt wurde) und ruft die Methode auf launch.
Die HTTP-Anwendungsinstanz führt das anfängliche Routing durch: Sie benötigt den ersten Teil der URL, um herauszufinden, welcher Bereich geladen werden soll (admin / frontend / rest / ...).
Wenn ein Bereich definiert ist, wird die Konfiguration für diesen Bereich geladen (im Gegensatz zu Magento 1, in dem die gesamte Konfiguration geladen wurde).
Dann Anwendungsobjektaufrufe Magento\Framework\App\FrontControllerInterface::dispatchdes angeforderten Bereichs. Der Front Controller routet wie in Magento 1: Alle Router werden iteriert, um der Anfrage zu entsprechen. Der Router, der der Anforderung entspricht, gibt eine Instanz von ActionController zurück, die mit übereinstimmt FrontController. Dieser Vorgang ist effizienter, da nur Router eines Bereichs verwendet werden (Admin-Router wird im Frontend nicht verwendet). All das zusätzliche Verhalten wurde von Front - Controller zu bewegt pluginsvon FrontControllerund Action - Controller.
Wenn FrontControllereine Instanz des Aktionscontrollers dispatchabgerufen wird, wird sie aufgerufen . Action Controller führt seine Aufgabe aus und gibt eine Instanz einer Implementierung von ResultInterface(z. B. page, redirect, ...) zurück.
FrontControllerKehrt einfach ResultInterfacezur Anwendungsinstanz zurück, die die Antwort rendert.
Ich habe dies auf Meet Magento NL vorgestellt:
http://www.slideshare.net/Dutchento/anton-kril-mm15nl