What is the observer pattern in PHP? How to use it?

慕斯
Release: 2023-03-10 19:56:01
Original
1643 people have browsed it

We may not be so familiar with the observer pattern. It is an event system, which means that this pattern allows a class to observe the state of another class. When the state of the observed class changes, When, the observation class can receive notifications and take corresponding actions; the observer pattern provides another way to avoid tight coupling between components; so let’s discuss what the observer pattern is in this article!

Related recommendations: What is the factory pattern and factory method pattern in PHP?

Observer:

It is an event system, which means that this pattern allows a class to observe the state of another class when When the state of the observed class changes, the observing class can receive notifications and take corresponding actions; the observer pattern provides another way to avoid tight coupling between components;

We still use code For example, we create a new file, then define a class, and then write a member attribute in the class, which is an array to store observers, and then we define a method, which is used to store observers and Adding an observer allows the observer to be notified and make a certain response when the observed behavior is performed. The code is as an example:

<?php
class Man
{
//用来存放观察者
protected $observers = [];
//添加观察者方法
function addObserver($observer)
{
  $this->observers[]=$observer;
}
//花钱方法
function buy()
{
//当被观察者做出这个行为的时候,让观察者得到通并且做出一-定的反应
foreach ($this->observers as $girl) {
  $girl->pome();
}
}
}
class GirlFriend
{
function pome()
{
echo&#39;我只明白一件事,爱一个人,是那么痛苦<br />&#39;;
}
}
//创建对象
$xiaoming = new Man();
$xiaohua =new GirlFriend();
$xiaoli = new GirlFriend();
//添加观察者
$xiaoming->addObserver( $xiaohua); 
$xiaoming->addObserver($xiaoli);
$xiaoming->buy();
Copy after login

The running results are as follows:

What is the observer pattern in PHP? How to use it?

If there is a method to add an observer, then there is a method to delete an observer, so we also need to add a method to delete an observer,

function delObserver($observer)
{
//查找对应值在数组中的键
$key = array_search($observer,$this->observers);
//根据键删除值,并且数组重新索引
array_splice($this->observers, $key, 1);
}
}
Copy after login

//Delete

$xiaoming->delObserver( $xiaohua);
Copy after login

The code is as follows:

What is the observer pattern in PHP? How to use it?

Recommended learning: "PHP Video Tutorial"

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

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template