Heim >Backend-Entwicklung >PHP-Tutorial >Unter der Motorhaube von Yii's Komponentenarchitektur, Teil 2
Dieser Artikel setzt unsere Erforschung der CComponent
-Klasse von YII Framework fort und konzentriert sich auf ereignisgesteuerte Programmierung in PHP. Dies ist Teil 2 einer dreiteiligen Serie, die zeigt, wie YII eine Komponenten-basierte Architektur nutzt, um Eigenschaften, Konfiguration, Ereignisse und Verhaltensweisen zu verwalten. Teil 1 behandelte Immobilienimplementierung unter Verwendung der magischen Methoden von PHP; Hier befassen wir uns mit der Event -Handhabung.
Schlüsselkonzepte:
CComponent
Klasse untermauert ihre Komponenten-basierte Architektur und bietet einen robusten Mechanismus für die Umgang mit Ereignissen. CComponent
, definiert, auslösen und an das Anbringen von Ereignishandlern. Dies beinhaltet die Definition von Ereignismethoden (vorangestellt mit "On"), das Auslösen mit $this->raiseEvent()
und das Anbringen von Handlern mit onEventName = callback
.
Implementierung von Ereignissen:
Ereignisimplementierung umfasst drei wichtige Schritte: Definieren, Anbringen von Handlern und Auslösen des Ereignisses.
1. Ereignisse definieren:
Ereignisse werden durch Erstellen von Methoden definiert, die mit "On" vorangestellt sind. Beispielsweise kann ein "Benutzerregistrierungs" -Ereignis als definiert werden. Diese Methode liegt innerhalb des relevanten Moduls (z. B. Benutzermodul). onUserRegistered
<?php public function onUserRegistered($event) { $this->raiseEvent("onUserRegistered", $event); }Das Ereignis wird zu einer Komponente (z. B.
) für die anwendungsweite Zugänglichkeit hinzugefügt. Yii::app()->user
2. Auslösen von Ereignissen:
Das Ereignis wird innerhalb des entsprechenden Controllers (z. B. Benutzerregistrierungscontroller) ausgelöst.
<?php public function actionUserRegister() { // ... user registration logic ... $e = new CEvent($this, array("user" => $user)); Yii::app()->user->onUserRegistered($e); }Das Objekt
enthält die Ereignisquelle und alle relevanten Daten. CEvent
führt dann alle angehängten Handler aus. raiseEvent()
3. Anhängen von Ereignishandlern:
Ereignishandler werden mit der -Syntax angehängt. Zum Beispiel: onEventName = callback
<?php public function init() { Yii::app()->user->onUserRegistered = array($this, "sendMyEmail"); } public function sendMyEmail($event) { $user = $event->params["user"]; mail($user->email, "Welcome!", "Hello..."); }, wodurch die
-Methode als Handler für sendMyEmail
angehängt wird. Anonyme Funktionen (PHP 5.3) werden ebenfalls unterstützt. onUserRegistered
yiis Implementierung: CComponent
Die clevere Implementierung von
verwaltet die Ereignisdefinition, das Auslösen und den Anhang. CComponent
__set
magische Methode verarbeitet das Anbringen von Rückrufen an Ereignisse und speichert sie in der variablen $_e
privatem Mitglied. Diese Variable ist ein Array, in dem Tasten Ereignisnamen und Werte von Rückrufen sind. raiseEvent
-Methode durch die mit einem Ereignis verknüpften Rückrufe durchführt und führt sie aus. <?php public function onUserRegistered($event) { $this->raiseEvent("onUserRegistered", $event); }
Schlussfolgerung:
Ereignisse bieten einen leistungsstarken Mechanismus zur Erstellung robuster, flexibler und wiederverwendbarer Code. In diesem Artikel wurde gezeigt, wie Yiis CComponent
Klasse dieses Muster in PHP implementiert, ein Konzept, das in verschiedenen Frameworks und Sprachen anwendbar ist. Der letzte Teil dieser Serie umfasst Verhaltensweisen, eine weitere Methode zur Erweiterung der Komponentenfunktionalität.
(häufig gestellte Fragen der Kürze weggelassen, da er mit dem bereits angegebenen Inhalt weitgehend überflüssig ist.)
Das obige ist der detaillierte Inhalt vonUnter der Motorhaube von Yii's Komponentenarchitektur, Teil 2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!