Mit dem vorherigen „Hello, World“ scheint die Entwicklung von Yii-Anwendungen einfach zu sein, ziehen Sie keine voreiligen Schlüsse :-), ich erinnere mich, als ich vor vielen Jahren zum ersten Mal mit der MFC-Entwicklung begann, nachdem ich das erste Hello geschrieben hatte , Welt, ich habe immer noch das Gefühl, ich weiß nicht, wo ich anfangen soll, und ich weiß nicht, wie ich mit dem Schreiben von MFC-Anwendungen beginnen soll. Dies liegt daran, dass MFC eine große Anzahl von Klassenbibliotheken bereitstellt Bevor Sie das MFC-Anwendungsframework und die darin enthaltenen Hauptklassenbibliotheken kennen, können Sie grundsätzlich keine Anwendungen schreiben und das Yii-Framework erlernen. Sie müssen außerdem zunächst die Hauptkomponenten und einige häufig verwendete Klassen verstehen, aus denen Yii-Anwendungen bestehen .
Wie im vorherigen Tutorial erwähnt, übernimmt Yii MVC (Model-View-Controller) und führt das Eingabeskript und die Hauptanwendungsklasse CWebApplication ein. Eine Instanz einer Anwendungsklasse wird vom Eingabeskript als Objekt (Singleton) erstellt. Auf dieses Anwendungs-Singleton-Objekt kann von überall über Yii::app() zugegriffen werden.
Hauptanwendungsinstanz (CWebApplication)
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, übergeben wir den Namen der Konfigurationsdatei als Parameter an den Konstruktor der Anwendung, oder wie unten beschrieben wird an Yii::createWebApplication() übergeben. Dies geschieht normalerweise im Eingabeskript:
$app=Yii::createWebApplication($configFile); Anwendungskomponenten
Die Funktionalität der Anwendung kann durch ihre flexible Komponente einfach angepasst oder erweitert werden Struktur. 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 Komponenten-Array 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 ID der Komponente 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.
Lebenszyklus von CWebApplication
Bei der Verarbeitung von Benutzeranfragen durchläuft die Anwendung den folgenden Lebenszyklus:
Vorinitialisierung der Anwendung über CApplication::preinit();
Autoloader und Fehlerbehandlung von Klassen festlegen;
Anwendungskonfiguration laden;
Initialisieren Sie die Anwendung über CApplication::init ():
Anwendungsverhalten registrieren;
Das onBeginRequest-Ereignis auslösen;
Anfrage des Benutzers analysieren;
Controller erstellen;
Ereignis „onEndRequest“ auslösen.
CController-Steuerklasse
Ein Controller ist eine Instanz von CController oder seiner Unterklasse. Es wird von der Anwendung auf Anfrage des Benutzers erstellt. Wenn ein Controller ausgeführt wird, führt er die angeforderte Aktion aus, die normalerweise die erforderlichen Modelle einführt und die entsprechenden Ansichten rendert. Die einfachste Form einer Aktion ist eine Controller-Klassenmethode, deren Name mit action beginnt.
Controller haben normalerweise eine Standardaktion. Wenn in der Benutzeranforderung keine auszuführende Aktion angegeben ist, wird die Standardaktion ausgeführt. Standardmäßig lautet der Standardaktionsname index. Es kann durch Festlegen von CController::defaultAction geändert werden.
Das Folgende ist der einfachste Code, der für eine Controller-Klasse erforderlich ist. Da für diesen Controller keine Aktionen definiert sind, wird bei Anfragen an ihn eine Ausnahme ausgelöst.
RoutingDas Grundformat der URL für Benutzer zum Zugriff auf Webseiten ist /index.php?r=XController/YAction, was dem XController im Controller-Unterverzeichnis von entspricht das geschützte Verzeichnis mit der in PHP definierten YAction-Methode der Klasse XController. Beispielsweise repräsentiert die Route post/edit den PostController und seine Bearbeitungsaktion. Standardmäßig fordert die URL http://hostname/index.php?r=post/edit diesen Controller und diese Aktion an. Modell (CModel-Klasse) Ein Modell ist eine Instanz von CModel oder einer seiner Unterklassen. Modelle werden verwendet, um Daten und damit verbundene Geschäftslogik zu speichern.Yii implementiert zwei Arten von Modellen: Formularmodell und Active Record. Beide erben von derselben Basisklasse CModel. Formularmodelle sind Instanzen von CFormModel. Das Formularmodell wird verwendet, um Daten zu speichern, die aus der Eingabe des Benutzers stammen. Diese Daten werden häufig erfasst, verwendet und dann verworfen. Beispielsweise können wir auf einer Anmeldeseite das Formularmodell verwenden, um die vom Endbenutzer bereitgestellten Benutzernamen- und Passwortinformationen darzustellen. Nähere Einzelheiten entnehmen Sie bitte dem Nutzungsformular.class SiteController extends CController { }
Active Record (AR) ist ein Entwurfsmuster zur Abstraktion des Datenbankzugriffs in einem objektorientierten Stil. Jedes AR-Objekt ist eine Instanz von CActiveRecord oder einer seiner Unterklassen. Stellt eine Zeile in der Datentabelle dar. Die Felder in der Zeile entsprechen Eigenschaften im AR-Objekt.
View View
View ist ein PHP-Skript, das die Hauptelemente der Benutzerinteraktion enthält. Er kann PHP-Anweisungen enthalten, wir empfehlen jedoch, dass diese Anweisungen das Datenmodell nicht ändern und dass es am besten ist, seine Einfachheit beizubehalten (einfach als Ansicht). Um eine Trennung von Logik und Schnittstelle zu erreichen, sollten große Teile der Logik im Controller oder Modell und nicht in der Ansicht platziert werden.
In Analogie zu Windows-Anwendungen ähnelt View der Form-Klasse von Windows-Anwendungen, in denen Steuerelemente zum Definieren der Benutzeroberfläche verwendet werden. Die Steuerelemente entsprechen dem Yii-Framework und werden zu CWidget, einer hauptsächlich verwendeten Komponente um Daten darzustellen. Normalerweise in eine Ansicht eingebettet, um eine komplexe und unabhängige Benutzeroberfläche zu erstellen. Beispielsweise kann ein Kalender-Widget verwendet werden, um eine komplexe Kalenderoberfläche wiederverwendbar zu machen.
Masterpage ähnlich wie Asp.Net heißt in Yii Layout.
Layout ist eine spezielle Ansichtsdatei, die zum Dekorieren von Ansichten verwendet wird. Sie enthält normalerweise einen gemeinsamen Teil der Ansicht in der Benutzeroberfläche. Beispielsweise kann das Layout Kopf- und Fußzeilenteile enthalten und dann den Inhalt dazwischen einbetten .
...Kopfzeile hier...
...Fußzeile hier...$content speichert die Rendering-Ergebnisse der Inhaltsansicht.
Bei Verwendung von render(), Layout wird implizit angewendet. Das Ansichtsskript protected/views/layouts/main.php ist die Standardlayoutdatei. Dies kann durch Ändern von CWebApplication::layout oder CWebApplication::layout geändert werden. Um eine Ansicht ohne Layout zu rendern, rufen Sie renderPartial() auf.
Das Obige stellt mehrere wichtige Komponenten der Yii-Anwendung vor. Sie können sich auf das Beispiel „Hello, World“ beziehen, und die Dateistruktur der Yii-Anwendung hat auch eine Standarddefinition. Das Folgende ist die Standardverzeichnisstruktur der Anwendung:
Bevor Sie Yii-Anwendungen offiziell entwickeln, werfen Sie zunächst einen groben Blick auf die von Yii bereitgestellte Klassenbibliothek http://www.yiiframework.com/doc/api /, die in der folgenden Abbildung aufgeführt ist Mit den von jedem Klassenpaket unterstützten Funktionen können Sie Yii in Zukunft flexibler für die Entwicklung von Webanwendungen nutzen.
Das Obige ist der Inhalt des PHP-Entwicklungsframeworks Yii Framework-Tutorial (2) Grundlagen der Yii-Webanwendung Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!