Maison >développement back-end >tutoriel php >Comment fonctionne le modèle d'observateur en PHP ?
Le modèle Observer en PHP est un modèle de conception qui permet aux observateurs de s'abonner et de répondre aux changements d'état dans un sujet. Lorsque l'état du sujet change, elle en informe les observateurs, qui peuvent se mettre à jour en conséquence : la classe topic maintient une liste d'observateurs et fournit des méthodes pour attacher et supprimer des observateurs. La classe topic fournit des méthodes pour obtenir et définir l'état, et déclenche des notifications d'observateur lorsque l'état change. La classe observer définit une méthode de mise à jour qui est appelée lorsque l'état du sujet change. Les classes d'observateurs concrètes implémentent des méthodes de mise à jour pour mettre à jour leur propre logique. En pratique, les observateurs s'abonnent aux sujets et lorsque l'état du sujet change, l'observateur est averti et se met à jour.
Comment fonctionne le modèle Observer en PHP
Introduction
Le modèle Observer est un modèle de conception logicielle qui permet à des objets (appelés observateurs) de s'abonner aux changements d'état d'autres objets (appelés sujets) et de répondre à cela. Lorsque l'état du sujet change, il en informe tous les observateurs, et ces derniers peuvent se mettre à jour en conséquence.
Structure du code
En PHP, nous pouvons utiliser la structure de classe suivante pour implémenter le modèle d'observateur :
Classe de thème :
class Subject { private $observers = []; private $state; public function attach(Observer $observer) { $this->observers[] = $observer; } public function detach(Observer $observer) { $index = array_search($observer, $this->observers); if ($index !== false) { unset($this->observers[$index]); } } public function getState() { return $this->state; } public function setState($state) { $this->state = $state; $this->notifyObservers(); } private function notifyObservers() { foreach ($this->observers as $observer) { $observer->update($this); } } }
Classe d'observateur :
interface Observer { public function update(Subject $subject); }
Classe d'observateur concret :
class ConcreteObserver1 implements Observer { public function update(Subject $subject) { // 更新自己的逻辑 } } class ConcreteObserver2 implements Observer { public function update(Subject $subject) { // 更新自己的逻辑 } }
Cas pratique
Nous pouvons utiliser l'exemple de code suivant pour illustrer l'application du modèle Observer dans la pratique :$subject = new Subject(); $observer1 = new ConcreteObserver1(); $observer2 = new ConcreteObserver2(); $subject->attach($observer1); $subject->attach($observer2); $subject->setState('New state'); // 触发更新 // 观察者收到更新并相应更新自己Lorsque le statut d'un sujet est mis à jour, tous les observateurs qui y sont abonnés seront avertis et se mettront à jour en conséquence.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!