怎么在PHP中定义一个观察者模式

  介绍

怎么在PHP中定义一个观察者模式?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

具体如下:

& lt; PHP ?      interface 可观察到的   {   function 才能;附加(Observer 观察者美元);   function 才能;分离(Observer 观察者美元);   function 才能通知();   }/* *   ,* Class 登录   ,* @author  jichao.wang   ,*/class  Login  implements 可观测   {   private 才能;美元观察员;   public 才能,美元地位;   public 才能;$ ip;   const 才能;LOGIN_ACCESS =, 1;   const 才能;LOGIN_WRONG_PASS =, 2;   const 才能;LOGIN_USER_UNKNOWN =, 3;   function 才能;__construct ()   {才能   ,,,这个→美元observers =,数组();   ,,}   ,/* *   ,,*,@param  Observer  $观察者   ,,*,@author  jichao.wang   ,,*,attach  a 观察者   ,,*/function 才能;附加(Observer 观察者美元)   {才能   ,,,这个→美元观察家[],=,观察者美元;   ,,}   ,/* *   ,,*,@param  Observer  $观察者   ,,*,@author  jichao.wang   ,,*,detach  a 观察者   ,,*/function 才能;分离(Observer 观察者美元)   {才能   ,,,newObservers 美元;=,数组();   ,,,foreach  ($ this→observers  as  key 美元;=祝辞,突发交换美元),{   ,,,,,if  (obs 美元;!==,观察者美元),{   ,,,,,,,美元newObservers[],=,突发交换美元;   ,,,,,}   ,,,}   ,,,这个→美元observers =, newObservers美元;   ,,}   ,/* *   ,,*,@author  jichao.wang   ,,*,handle  observer 通知   ,,*/function 才能notify ()   {才能   ,,,foreach  ($ this→observers  as 突发交换美元),{   ,,,,,观察→美元更新($);   ,,,}   ,,}   ,/* *   ,,*,@author  jichao.wang   ,,*,执行登陆   ,,*/function 才能;handleLogin ()   {才能   ,,,ip 美元;=,兰德(1100);   ,,,switch (兰德(1,,3)),{   ,,,,,case  1:   ,,,,,,,这个→美元setStatus (self:: LOGIN_ACCESS, $ ip);   ,,,,,,,ret 美元;=,真的;   ,,,,,,,休息;   ,,,,,case  2:   ,,,,,,,这个→美元setStatus (self:: LOGIN_WRONG_PASS, $ ip);   ,,,,,,,ret 美元;=,假;   ,,,,,,,休息;   ,,,,,case  3:   ,,,,,,,这个→美元setStatus (self:: LOGIN_USER_UNKNOWN, $ ip);   ,,,,,,,ret 美元;=,假;   ,,,,,,,休息;   ,,,}   ,,,/* *   ,,,,*,handle 事件   ,,,*/,,,这美元→通知();   ,,,return 随著美元;   ,,}   ,/* *   ,,*,@param 美元地位   ,,*,@author  jichao.wang   ,,*,set  login 状态   ,,*/function 才能;setStatus(地位、ip)美元   {才能   ,,,这个→美元status =,美元地位;   ,,,这个→美元ip =, $ ip;   ,,}   ,/* *   ,,*,@return 混合   ,,*,@author  jichao.wang   ,,*,get  login 状态   ,,*/function 才能getStatus ()   {才能   ,,,return 这→美元地位;   ,,}   }/* *   ,* Interface 观察者   ,* @author  jichao.wang   ,*/interface  Observer  {   function 才能更新(Observable 可见美元);   }/* *   ,* Class  EmailObserver   ,* @author  jichao.wang   ,*/class  EmailObserver  implements  Observer  {   function 才能;update  (Observable 可见美元),{   ,,,status 美元;=,可见→美元的getStatus ();   ,,,如果(status 美元;==,登录:LOGIN_ACCESS) {//,,,,,,这个→美元sendMail(& # 39;用户ip: & # 39;。可见→美元ip强生# 39;登陆成功! & # 39;);   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在PHP中定义一个观察者模式