Heim  >  Artikel  >  Backend-Entwicklung  >  Yii Framework Offizielle Tutorial-Ergänzung 6 – Grundkenntnisse: Anwendung, Komponenten, Konfiguration, Lebenszyklus

Yii Framework Offizielle Tutorial-Ergänzung 6 – Grundkenntnisse: Anwendung, Komponenten, Konfiguration, Lebenszyklus

黄舟
黄舟Original
2017-02-11 09:32:251341Durchsuche



Anwendung bezieht sich auf den Ausführungskontext bei der Anforderungsverarbeitung. Seine Hauptaufgabe besteht darin, Benutzeranfragen zu analysieren und diese zur weiteren Bearbeitung an den zuständigen Verantwortlichen weiterzuleiten. Es dient auch als Servicecenter und verwaltet Konfigurationen auf Anwendungsebene. Aus diesem Grund werden Anwendungen auch als Frontend-Controller bezeichnet.

Die Anwendung wird vom Eingabeskript als Singleton-Objekt erstellt. Auf dieses Anwendungs-Singleton-Objekt kann von überall über Yii::app() zugegriffen werden.

1. Anwendungskonfiguration

Standardmäßig ist die Anwendung eine Instanz von CWebApplication. Um es anzupassen, müssen wir normalerweise eine Konfigurationsdatei (oder ein Array) bereitstellen, um seine Eigenschaftswerte beim Erstellen der Anwendungsinstanz zu initialisieren. Eine weitere Möglichkeit, Ihre Anwendung anzupassen, besteht darin, CWebApplication zu erweitern.

Konfiguration ist ein Array von Schlüssel-Wert-Paaren. Jeder Schlüssel stellt den Namen einer Eigenschaft in der Anwendungsinstanz dar und jeder Wert ist der Anfangswert der entsprechenden Eigenschaft. Die folgende Konfiguration legt beispielsweise den Namen und die defaultController-Eigenschaften der Anwendung fest.


array(
    'name'=>'Yii Framework',
    'defaultController'=>'site',
)

Normalerweise speichern wir diese Konfigurationen in einem separaten PHP-Skript (z. B. protected/config/main.php). . Im Skript geben wir dieses Konfigurationsarray zurück über:


return array(...);

Um diese Konfiguration anzuwenden, würden wir den Namen verwenden der Konfigurationsdatei wird als Parameter an den Konstruktor der Anwendung oder wie folgt an Yii::createWebApplication() übergeben. Dies erfolgt in der Regel in einem Eingabeskript:


$app=Yii::createWebApplication($configFile);

Tipp: Wenn die Anwendungskonfiguration sehr komplex ist, können wir sie in mehrere Dateien aufteilen. Jede Datei gibt einen Teil des Konfigurationsarrays zurück. Dann rufen wir in der Hauptkonfigurationsdatei PHPs include() auf, um die verbleibenden Konfigurationsdateien einzuschließen und sie zu einem vollständigen Konfigurationsarray zusammenzuführen.

2. Anwendungsbasisverzeichnis

Das Anwendungsbasisverzeichnis bezieht sich auf das Stammverzeichnis, das alle sicherheitsrelevanten PHP-Skripte und Daten enthält. Standardmäßig handelt es sich um ein Unterverzeichnis mit dem Namen protected, das sich in dem Verzeichnis befindet, das das Eingabeskript enthält. Es kann durch Festlegen des basePath-Attributs in der Anwendungskonfiguration angepasst werden.

Inhalte im Anwendungsbasisverzeichnis sollten vor dem direkten Zugriff durch Website-Besucher geschützt werden. Für den Apache-HTTP-Server lässt sich dies leicht erreichen, indem man eine .htaccess-Datei im Basisverzeichnis ablegt. Der Inhalt von .htaccess ist wie folgt:

deny from all

3. Anwendungskomponenten

Die Funktionalität der Anwendung kann durch ihre flexible Komponentenstruktur leicht angepasst oder erweitert werden. Die Anwendung verwaltet eine Reihe von Anwendungskomponenten. Jede Komponente implementiert eine bestimmte Funktion. Beispielsweise analysiert die Anwendung Anforderungen des Benutzers mithilfe von CUrlManager und CHttpRequest.

Durch die Konfiguration des Komponentenattributs der Anwendung können wir jede in der Anwendung verwendete Komponentenklasse und ihre Attributwerte anpassen. Beispielsweise können wir die CMemCache-Komponente der Anwendung so konfigurieren, dass sie mehrere Memcache-Server zum Caching verwenden kann:


array(
    ......
    'components'=>array(
        ......
        'cache'=>array(
            'class'=>'CMemCache',
            'servers'=>array(
                array('host'=>'server1', 'port'=>11211, 'weight'=>60),
                array('host'=>'server2', 'port'=>11211, 'weight'=>40),
            ),
        ),
    ),
)

Wie oben gezeigt, haben wir das Cache-Element zum Komponentenarray hinzugefügt. Das Cache-Element gibt an, dass die Klasse dieser Komponente CMemCache ist und ihr Server-Attribut entsprechend initialisiert werden sollte.

Um auf eine Anwendungskomponente zuzugreifen, verwenden Sie Yii::app()->ComponentID , wobei sich ComponentID auf die Komponenten-ID bezieht (z. B. Yii::app()->cache).

Die Komponenten einer Anwendung können deaktiviert werden, indem in der Konfiguration „enabled“ auf „false“ gesetzt wird. Null wird zurückgegeben, wenn wir auf eine deaktivierte Komponente zugreifen.

Tipp: Standardmäßig werden Anwendungskomponenten bei Bedarf erstellt. Dies bedeutet, dass eine Anwendungskomponente möglicherweise überhaupt nicht erstellt wird, wenn nicht in einer Benutzeranfrage auf sie zugegriffen wird. Wenn eine Anwendung mit vielen Komponenten konfiguriert ist, kann es daher sein, dass ihre Gesamtleistung nicht beeinträchtigt wird. Einige Anwendungskomponenten (z. B. CLogRouter) müssen möglicherweise erstellt werden, unabhängig davon, ob auf sie zugegriffen wird. Listen Sie dazu die ID im Attribut preload der Anwendung auf.

4. Kernanwendungskomponenten

Yii definiert eine Reihe von Kernanwendungskomponenten vor, um Funktionen bereitzustellen, die in gängigen Webanwendungen verwendet werden. Beispielsweise wird die Anforderungskomponente verwendet, um Benutzeranfragen zu analysieren und Informationen wie URL, Cookies usw. bereitzustellen. Durch die Konfiguration der Eigenschaften dieser Kernkomponenten können wir das Standardverhalten von Yii in nahezu jeder Hinsicht ändern.

Nachfolgend listen wir die von CWebApplication vordefinierten Kernkomponenten auf.

  • assetManager: CAssetManager – verwaltet die Freigabe privater Ressourcendateien.

  • authManager: CAuthManager – Verwaltet die rollenbasierte Zugriffskontrolle (RBAC)

  • cache: CCache – Bietet Daten-Caching-Funktionalität. Beachten Sie, dass Sie die tatsächliche Klasse angeben müssen (z. B. CMemCache, CDbCache). Andernfalls wird NULL zurückgegeben, wenn Sie auf diese Komponente zugreifen.

  • clientScript: CClientScript – Verwaltet Client-Skripte (Javascripts und CSS).

  • coreMessages: CPhpMessageSource – Bietet die Übersetzung von Kernnachrichten, die vom Yii-Framework verwendet werden.

  • db: CDbConnection – Stellt eine Datenbankverbindung bereit. Beachten Sie, dass Sie zur Verwendung dieser Komponente deren Eigenschaft „connectionString“ konfigurieren müssen.

  • errorHandler: CErrorHandler – Behandelt nicht erfasste PHP-Fehler und Ausnahmen.

  • Format: CFormatter – formatierte numerische Anzeige. Diese Funktion ist ab Version 1.1.0 verfügbar.

  • Nachrichten: CPhpMessageSource – Bietet Nachrichtenübersetzungen, die in Yii-Anwendungen verwendet werden.

  • Anfrage: CHttpRequest – Stellt Informationen über die Anfrage des Benutzers bereit.

  • securityManager: CSecurityManager – Bietet sicherheitsbezogene Dienste wie Hashing und Verschlüsselung.

  • session: CHttpSession – Bietet sitzungsbezogene Funktionen.

  • statePersister: CStatePersister – Stellt globale Zustandspersistenzmethoden bereit.

  • urlManager: CUrlManager – Bietet URL-Analyse- und Erstellungsfunktionen

  • Benutzer: CWebUser – Stellt Identifikationsinformationen des aktuellen Benutzers bereit.

  • themeManager: CThemeManager – Themen verwalten.

5. Anwendungslebenszyklus

Bei der Verarbeitung von Benutzeranfragen durchläuft die Anwendung den folgenden Lebenszyklus:

  1. Bestanden CApplication::preinit() initialisiert die Anwendung vor;

  2. Legt den Autoloader und die Fehlerbehandlung der Klasse fest

  3. Kernklassenkomponenten registrieren ;

  4. Anwendungskonfiguration laden;

  5. Initialisieren Sie die Anwendung über CApplication::init():

  • Anwendungsverhalten registrieren; 🎜>

  • OnBeginRequest-Ereignis auslösen; >

    Benutzeranfrage bearbeiten:
  • Benutzeranfrage analysieren;
  • Controller erstellen; >

    Führen Sie den Controller aus;
    • lösen Sie das onEndRequest-Ereignis aus.
    • Das Obige ist die offizielle Tutorial-Ergänzung 6 des Yii Framework – Grundkenntnisse: Anwendung, Komponenten, Konfiguration, Lebenszyklusinhalte und weitere verwandte Inhalte Achten Sie auf die chinesische PHP-Website (www.php.cn)!

  • Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn