PHP设计模式之观察者模式FUN版
使用协程模式:
<?php
/*********观察者模式FUNC版*******/
use functionSwoole\Coroutine\run;
use functionSwoole\Coroutine\go;
useSwoole\Coroutine\System;
$user = [
'name'=>'',
'email'=>'',
'mobile'=>'',
'updates'=> [],
'OnUpdate'=>function($update)use(&$user) {
array_push($user['updates'],$update);
},
'Update'=>function()use(&$user) {
foreach($user['updates']as$update){
go(function()use($update,&$user){
$update($user);
System::sleep(3);
});
};
// sleep(5);
},
'Register'=>function($name,$email,$mobile)use(&$user) {
$user['name'] =$name;
$user['email'] =$email;
$user['mobile'] =$mobile;
$user['Update']();
},
];
$user["OnUpdate"](function($subject){
echo"send email to ".$subject['email'] .PHP_EOL;
});
$user["OnUpdate"](function($subject){
echo"send sms to ".$subject['mobile'] .PHP_EOL;
});
$user['Register']("紫羽·大薯","345374113@qq.com","1888888888");
echo"我先提前完成输出";
\Swoole\Event::wait();