} } } class GeneralLogger extends LoginObserver { function doUpdate(Login $login) { $status = $login->getStatus(); // add login data to log print __CLASS__ . ":\tadd login data to log\n"; } } class PartnershipTool extends LoginObserver { function doUpdate(Login $login) { $status = $login->getStatus(); // check $ip address // set cookie if it matches a list print __CLASS__ . ":\tset cookie if it matches a list\n"; } } $login = new Login(); new SecurityMonitor($login); new GeneralLogger($login); $pt = new PartnershipTool($login); $login->detach($pt); for ($x = 0; $x < 10; $x++) { $login->handleLogin("bob", "mypass", '158.152.55.35'); print "\n"; }
<?php include_once '../../class/pattern/observer.php'; /* $login = new Login(); // 建立登入類別 $login->attach(new SecurityMonitor()); // 將安全監控類別註冊 $login->handleLogin("", "hank", "192.168.1.101"); */ $login = new Login(); new SecurityMonitor($login); new GeneralLogger($login); new PartnershipTool($login); $login->handleLogin("", "hank", "192.168.1.101");
} /** * Class EmailObserver */ class EmailObserver extends LoginObserver { //不同功能的观察者实现不同的功能 function doUpdate(Login $login) { $status = $login->getStatus(); if ($status == Login::LOGIN_ACCESS) { // $this->sendMail('用户ip:'.$observable->ip.'登陆成功!'); echo __CLASS__ . '用户ip:' . $login->ip . '登陆成功!' . '------------------'; } if ($status == Login::LOGIN_WRONG_PASS) { // $this->sendMail('用户ip:'.$observable->ip.'登陆失败,密码错误!'); echo __CLASS__ . '用户ip:' . $login->ip . '登陆失败,密码错误!' . '------------------'; } if ($status == Login::LOGIN_USER_UNKNOWN) { // $this->sendMail('用户ip:'.$observable->ip.'登陆失败,无此用户!'); echo __CLASS__ . '用户ip:' . $login->ip . '登陆失败,无此用户!' . '------------------'; } } } //实例化登陆信息 $login = new Login(); //实现发邮件观察者 new EmailObserver($login); //开始登陆 $login->handleLogin();
if ($status[0] == Login::LOGIN_WRONG_PASS) { // Отправим почту системному администратору print __CLASS__ . ":\tОтправка почты системному администратору \n"; } } } class GeneralLogger extends LoginObserver { function doUpdate(Login $login) { $status = $login->getStatus(); // Регистрируем подключение в журнал print __CLASS__ . ":\tРегистрация в системном журнале\n"; } } class PartnershipTool extends LoginObserver { function doUpdate(Login $login) { $status = $login->getStatus(); // Проверим IP // Отправим cookie-файл, если адрес соответствует списку print __CLASS__ . ":\tОтправка cookie-файл, если адрес соответствует списку\n"; } } $login = new Login(); new SecurityMonitor($login); new GeneralLogger($login); new PartnershipTool($login); $login->handleLogin('Anton', '123', '192.168.0.3');