Übersicht über Initialisierung und Bootstrap
Um die Commerce-Anwendung auszuführen, werden die folgenden Aktionen in pub/index.php implementiert:
- Schließen Sie app/bootstrap.php ein, das wichtige Initialisierungsroutinen wie die Fehlerbehandlung, die Initialisierung des Autoloaders, die Festlegung von Profilerstellungsoptionen und die Festlegung der standardmäßigen Zeitzone durchführt.
- Erstellen einer Instanz von \Magento\Framework\App\Bootstrap.php
- Erstellen Sie eine Commerce-Anwendungsinstanz: \Magento\Framework\AppInterface
- Commerce ausführen
Bootstrap-Ausführungslogik
Das Bootstrap-Objekt verwendet den folgenden Algorithmus zum Ausführen der Commerce-Anwendung:
-
Initialisiert den Fehler-Handler.
-
Erstellt den Objektmanager und die grundlegenden freigegebenen Dienste, die überall verwendet werden und von der Umgebung betroffen sind. Die Umgebungsparameter werden ordnungsgemäß in diese Objekte eingefügt.
-
Stellt sicher, dass der Wartungsmodus nicht aktiviert ist; andernfalls wird beendet.
-
Stellt sicher, dass die Commerce-Anwendung installiert ist, andernfalls wird beendet.
-
Startet die Commerce-Anwendung.
Jede nicht abgefangene Ausnahme während des Anwendungsstarts wird in der
catchException()
-Methode, die Sie zur Verarbeitung der Ausnahme verwenden können, automatisch an Commerce zurückgegeben. Letzterer muss entwedertrue
oderfalse
zurückgeben:- Wenn
true
: Commerce hat die Ausnahme erfolgreich verarbeitet. Es ist nicht notwendig, etwas Anderes zu tun. - Wenn
false
: (oder ein anderes leeres Ergebnis), hat Commerce die Ausnahme nicht verarbeitet. Das Bootstrap-Objekt führt die standardmäßige UnterRoutine für die Ausnahmebehandlung aus.
- Wenn
-
Sendet die Antwort, die vom Anwendungsobjekt bereitgestellt wird.
note info INFO Die Behauptung, dass die Commerce-Anwendung installiert ist und sich nicht im Wartungsmodus befindet, ist das Standardverhalten der Klasse \Magento\Framework\App\Bootstrap
. Sie können sie beim Erstellen des Bootstrap-Objekts mithilfe eines Einstiegspunktskripts ändern.Beispieleinstiegspunktskript, das das Bootstrap-Objekt ändert:
code language-php <?php use Magento\Framework\App\Bootstrap; require __DIR__ . '/app/bootstrap.php'; $params = $_SERVER; $params[Bootstrap::PARAM_REQUIRE_MAINTENANCE] = true; // default false $params[Bootstrap::PARAM_REQUIRE_IS_INSTALLED] = false; // default true $bootstrap = Bootstrap::create(BP, $params); /** @var \Magento\Framework\App\Http $app */ $app = $bootstrap->createApplication('Magento\Framework\App\Http'); $bootstrap->run($app);
Standardmäßige Ausnahmebehandlung
Das bootstrap -Objekt gibt an, wie die Commerce-Anwendung nicht abgefangene Ausnahmen wie folgt handhabt:
- Im Entwicklermodus zeigt die Ausnahme unverändert an.
- In jedem anderen Modus versucht, Ausnahmefehler zu protokollieren und eine allgemeine Fehlermeldung anzuzeigen.
- Beendet Commerce mit Fehlercode
1
Einstiegspunktanwendungen
Es gibt die folgenden Einstiegspunktanwendungen (d. h. von Commerce definierte Anwendungen, die vom Webserver als Ordnerindex verwendet werden):
HTTP-Einstiegspunkt
\Magento\Framework\App\Http funktioniert wie folgt:
-
Bestimmt den Anwendungsbereich.
-
Startet die Front-Controller- und Routing-Systeme, um eine Controller-Aktion zu finden und auszuführen.
-
Verwendet ein HTTP-Antwortobjekt, um ein Ergebnis zurückzugeben, das von der Controller-Aktion abgerufen wurde.
-
Fehlerbehandlung (in der folgenden Prioritätsreihenfolge):
-
Wenn Sie den Entwicklermodus verwenden:
- Wenn die Commerce-Anwendung nicht installiert ist, führen Sie eine Umleitung zum Einrichtungsassistenten durch.
- Wenn die Commerce-Anwendung installiert ist, zeigen Sie einen Fehler und den HTTP-Statuscode 500 (Interner Serverfehler) an.
-
Wenn sich die Commerce-Anwendung im Wartungsmodus befindet, zeigen Sie eine benutzerfreundliche Landingpage "Dienst nicht verfügbar"mit dem HTTP-Status-Code 503 (Dienst nicht verfügbar) an.
-
Wenn die Commerce-Anwendung nicht installiert ist, leiten Sie den Einrichtungsassistenten weiter.
-
Wenn die Sitzung ungültig ist, führen Sie eine Umleitung zur Startseite durch.
-
Wenn ein anderer Anwendungsinitialisierungsfehler auftritt, zeigen Sie eine benutzerfreundliche Seite "Seite nicht gefunden"mit dem HTTP-Status-Code 404 (Nicht gefunden) an.
-
Zeigen Sie bei jedem anderen Fehler eine benutzerfreundliche Seite "Dienst nicht verfügbar"mit HTTP-Antwort 503 an, generieren Sie einen Fehlerbericht und zeigen Sie dessen ID auf der Seite an.
-
Einstiegspunkt für statische Ressourcen
\Magento\Framework\App\StaticResource ist eine Anwendung zum Abrufen statischer Ressourcen (z. B. CSS, JavaScript und Bilder). Dadurch werden alle Aktionen mit einer statischen Ressource verschoben, bis die Ressource angefordert wird.
<your Commerce install dir>/pub/static
vorhanden sind.Im Standard- oder Entwicklermodus wird eine Anfrage für eine nicht vorhandene statische Ressource gemäß den in der entsprechenden .htaccess
festgelegten Neuschreibungsregeln an den statischen Einstiegspunkt umgeleitet.
Wenn die Anforderung an den Einstiegspunkt weitergeleitet wird, analysiert die Commerce-Anwendung die angeforderte URL anhand der abgerufenen Parameter und sucht die angeforderte Ressource.
-
Im Modus developer wird der Inhalt der Datei zurückgegeben, sodass bei jeder Anforderung der Ressource der zurückgegebene Inhalt auf dem neuesten Stand ist.
-
Im Modus Standard wird die abgerufene Ressource veröffentlicht, sodass sie über die zuvor angeforderte URL aufgerufen werden kann.
Alle zukünftigen Anforderungen für die statische Ressource werden vom Server genauso verarbeitet wie statische Dateien, d. h. ohne den Einstiegspunkt zu berücksichtigen. Wenn es erforderlich ist, veröffentlichte Dateien mit ursprünglichen zu synchronisieren, sollte das Verzeichnis
pub/static
entfernt werden. Daher werden Dateien automatisch mit der nächsten Anfrage erneut veröffentlicht.
Einstiegspunkt für Medienressourcen
Magento\MediaStorage\App\Media ruft Medienressourcen (d. h. alle Dateien, die in den Medienspeicher hochgeladen wurden) aus der Datenbank ab. Sie wird immer dann verwendet, wenn die Datenbank als Medienspeicher konfiguriert ist.
\Magento\Core\App\Media
versucht, die Mediendatei im konfigurierten Datenbankspeicher zu finden, sie in das Verzeichnis pub/static
zu schreiben und gibt dann ihren Inhalt zurück. Bei Fehler wird ein HTTP-Statuscode 404 (Nicht gefunden) im Header ohne Inhalt zurückgegeben.