1- ## Laravel事件之观察者模式
1+ ## Laravel 事件之观察者模式
22
33## 观察者模式
44
5- Laravel的事件提供了一个简单的观察者实现 ,能够订阅和监听应用中发生的各种事件。
5+ Laravel 的事件提供了一个简单的观察者实现 ,能够订阅和监听应用中发生的各种事件。
66
77既然用到观察者实现,那我们先来说下什么是观察者
88
9- 观察者模式(Observer),当一个对象的状态发生改变时,依赖他的对象会全部收到通知,并自动更新。
9+ 观察者模式 (Observer), 当一个对象的状态发生改变时,依赖他的对象会全部收到通知,并自动更新。
1010
11- 场景:一个事件发生后,要执行一连串更新操作.传统的编程方式,就是在事件的代码之后直接加入处理逻辑,当更新得逻辑增多之后,代码会变得难以维护.这种方式是耦合的,侵入式的,增加新的逻辑需要改变事件主题的代码
11+ 场景: 一个事件发生后, 要执行一连串更新操作. 传统的编程方式, 就是在事件的代码之后直接加入处理逻辑, 当更新得逻辑增多之后, 代码会变得难以维护. 这种方式是耦合的, 侵入式的, 增加新的逻辑需要改变事件主题的代码
1212
13- 观察者模式实现了低耦合,非侵入式的通知与更新机制
13+ 观察者模式实现了低耦合, 非侵入式的通知与更新机制
1414
1515具体代码实现
1616
@@ -27,24 +27,24 @@ interface ObServer
2727}
2828
2929/**
30- * 观察者1
30+ * 观察者 1
3131 */
3232class ObServer1 implements ObServer
3333{
3434 public function update($event_info = null)
3535 {
36- echo "观察者1 收到执行通知 执行完毕!\n";
36+ echo "观察者 1 收到执行通知 执行完毕!\n";
3737 }
3838}
3939
4040/**
41- * 观察者1
41+ * 观察者 1
4242 */
4343class ObServer2 implements ObServer
4444{
4545 public function update($event_info = null)
4646 {
47- echo "观察者2 收到执行通知 执行完毕!\n";
47+ echo "观察者 2 收到执行通知 执行完毕!\n";
4848 }
4949}
5050
@@ -57,13 +57,13 @@ class ObServer2 implements ObServer
5757class Event
5858{
5959
60- //增加观察者
60+ // 增加观察者
6161 public function add(ObServer $ObServer)
6262 {
6363 $this->ObServers[] = $ObServer;
6464 }
6565
66- //事件通知
66+ // 事件通知
6767 public function notify()
6868 {
6969 foreach ($this->ObServers as $ObServer) {
@@ -76,25 +76,25 @@ class Event
7676 */
7777 public function trigger()
7878 {
79- //通知观察者
79+ // 通知观察者
8080 $this->notify();
8181 }
8282}
8383
8484
85- //创建一个事件
85+ // 创建一个事件
8686$event = new Event();
87- //为事件增加旁观者
87+ // 为事件增加旁观者
8888$event->add(new ObServer1());
8989$event->add(new ObServer2());
90- //执行事件 通知旁观者
90+ // 执行事件 通知旁观者
9191$event->trigger();
9292
9393```
9494
95- ## Laravel中使用事件
95+ ## Laravel 中使用事件
9696
97- 在laravel中事件使用特别简单 ,我们可以通过
97+ 在 laravel 中事件使用特别简单 ,我们可以通过
9898
9999``` bash
100100
@@ -106,11 +106,11 @@ laravel 事件类保存在 app/Events 目录中,而这些事件的的监听器
106106
107107``` php
108108
109- // 在程序需要触发事件的地方通过event() 触发事件,比如注入给用户发送站内信的事件,发送邮件的事件
109+ // 在程序需要触发事件的地方通过 event() 触发事件,比如注入给用户发送站内信的事件,发送邮件的事件
110110
111111event(new SendMailEvent());
112112
113113```
114114
115115
116- [ 示例代码下载链接] ( https://github.com/cxp1539/laravel-core-learn/blob/master/code/Class6.php )
116+ [ 示例代码下载链接] ( https://github.com/cxp1539/laravel-core-learn/blob/master/code/Class6.php )
0 commit comments