index.php
\Magento\Framework\App\Http
Erstellt 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::dispatch
des 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 plugins
von FrontController
und Action - Controller.
Wenn FrontController
eine Instanz des Aktionscontrollers dispatch
abgerufen 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.
FrontController
Kehrt einfach ResultInterface
zur Anwendungsinstanz zurück, die die Antwort rendert.
Ich habe dies auf Meet Magento NL vorgestellt:
http://www.slideshare.net/Dutchento/anton-kril-mm15nl