Home >Backend Development >PHP Problem >How to implement observer pattern in php

How to implement observer pattern in php

藏色散人
藏色散人Original
2021-03-15 10:18:472477browse

php method to implement the observer pattern: first create a PHP sample file; then register the observer with the theme; finally, traverse the registration tree and let each object implement the operations provided by its interface.

How to implement observer pattern in php

The operating environment of this article: windows7 system, PHP7.1 version, DELL G3 computer

PHP implements observer mode

The word observer in "observer mode" is very informative. Children who have played many online games should know that even in Doudizhu, in addition to the players, there is also a character called "Observer". In the pattern design we are talking about today, the same is true for observers. First, there must be a "theme". Only with a theme can observers gather together with small stools. Secondly, the observer must also have his own operations. Otherwise there is no point in gathering together and doing nothing.

From a process-oriented perspective, first the observer registers with the subject. After registration, the subject notifies the observer to perform corresponding operations, and the whole thing is over.

From an object-oriented perspective, topics provide interfaces for registration and notification, and observers provide interfaces for their own operations. (These observers have the same interface.) Observers use the subject's interface to register with the topic, and the subject uses the observer interface to notify observers. The degree of coupling is quite low.

How to implement observer registration? The previous registrant pattern can easily provide us with ideas, just add these objects to a registration tree. How to notify? This is even simpler. Traverse the registration tree and let each object implement the operations provided by its interface

<?php
// 主题接口
interface Subject{
    public function register(Observer $observer);
    public function notify();
}
// 观察者接口
interface Observer{
    public function watch();
}
// 主题
class Action implements Subject{
     public $_observers=array();
     public function register(Observer $observer){
         $this->_observers[]=$observer;
     }
 
     public function notify(){
         foreach ($this->_observers as $observer) {
             $observer->watch();
         }
 
     }
 }
 
// 观察者
class Cat implements Observer{
     public function watch(){
         echo "Cat watches TV<hr/>";
     }
 }
 class Dog implements Observer{
     public function watch(){
         echo "Dog watches TV<hr/>";
     }
 }
 class People implements Observer{
     public function watch(){
         echo "People watches TV<hr/>";
     }
 }
 
 
 
// 应用实例
$action=new Action();
$action->register(new Cat());
$action->register(new People());
$action->register(new Dog());
$action->notify();
  

[Recommended learning: "PHP Video Tutorial"]

The above is the detailed content of How to implement observer pattern in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn