Ich möchte Code im onBeginRequest-Ereignis ausführen.
Wo mache ich das? Ich gehe davon aus, dass ich das im Code der Kernbibliothek nicht hinzufügen werde.
Ich bin ein total noob in Yii
Wenn Sie onBeginRequest und onEndRequest verwenden möchten, können Sie die folgenden Zeilen in Ihre Konfigurationsdatei einfügen:
%Vor%oder Sie können es inline machen
%Vor% wobei Y
ein Klassenname und getStats
und writeStats
Methoden dieser Klasse sind.
Stellen Sie sich vor, Sie haben eine Klasse Y
wie folgt deklariert:
So werden bei jeder Anfrage beide Methoden automatisch ausgeführt. Natürlich können Sie denken "warum nicht einfach onBeginRequest-Methode überladen?" Vor allen Dingen können Sie jedoch nicht die Klasse erweitern, um wiederholten Code auszuführen, und Sie können auch verschiedene Methoden verschiedener Klassen ausführen, die an verschiedenen Stellen deklariert sind. Sie können also
hinzufügen %Vor% in jedem anderen Teil Ihrer Anwendung zusammen mit früheren Event-Handlern und Sie werden sowohl Y->writeStats
als auch YClass->someMethod
nach der Verarbeitung der Anfrage ausführen. Mit diesem Verhalten können Sie Erweiterungskomponenten fast beliebiger Komplexität ohne Änderung des Quellcodes und ohne Erweiterung der Basisklassen von Yii erstellen.
Ich glaube, Sie können dies an jeder beliebigen Stelle in Ihren Dateien tun, bevor eine Ausgabe gestartet wird. Daher sollte es in einer Controller-, Ansichts- oder benutzerdefinierten Klasse funktionieren, die sich normalerweise im Ordner "protected" in einer Yii-Webanwendung befindet. Zu Ihrer Information: Diese Dateien sind keine Kerndateien und können (fast) frei bearbeitet werden, wie die Yii-Framework-Dateien (wie von der "$ yii" var in der Bootstrap-Datei index.php referenziert).
Die Funktionen sehen wie folgt aus:
%Vor%Tags und Links php yii yii-events