本文实例介绍了PHP简单投诉页面的实现代码,分享给大家供大家参考,具体内容如下
php代码:
<?php/* * 设计模式练习 * 1.数据库连接类(单例模式) * 2.调用接口实现留言本功能(工厂模式) * 3.实现分级举报处理功能(责任链模式) * 4.发送不同组合的举报信息(桥接模式) * 5.发送不同格式的举报信息(适配器模式) * 6.在投诉内容后自动追加时间(装饰器模式) * 7.根据会员登录信息变换显示风格(观察者模式) * 8.根据发帖长度加经验值(策略模式) */interface DB {function conn();}/** * 单例模式 */class MysqlSingle implements DB {protected static $_instance = NULL;public static function getInstance() {if (!self::$_instance instanceof self) {self::$_instance = new self;}return self::$_instance;}final protected function __construct() {echo "Mysql单例创建成功<br>";}final protected function __clone() {return false;}public function conn() {echo "Mysql连接成功<br>";}}/** * 工厂模式 */interface Factory {function createDB();}class MysqlFactory implements Factory {public function createDB() {echo "Mysql工厂创建成功<br>";return MysqlSingle::getInstance();}}/** * 根据用户名显示不同风格 * 观察者模式 */class Observer implements SplSubject {protected $_observers = NULL;public $_style = NULL;public function __construct($style) {$this->_style = $style;$this->_observers = new SplObjectStorage();}public function show() {$this->notify();}public function attach(SplObserver $observer) {$this->_observers->attach($observer);}public function detach(SplObserver $observer) {$this->_observers->detach($observer);}public function notify() {$this->_observers->rewind();while ($this->_observers->valid()) {$observer = $this->_observers->current();$observer->update($this);$this->_observers->next();}}}class StyleA implements SplObserver {public function update(SplSubject $subject) {echo $subject->_style . " 模块A<br>";}}class StyleB implements SplObserver {public function update(SplSubject $subject) {echo $subject->_style . " 模块B<br>";}}/** * 根据不同方式进行投诉 * 桥接模式 */class Bridge {protected $_obj = NULL;public function __construct($obj) {$this->_obj = $obj;}public function msg($type) {}public function show() {$this->msg();$this->_obj->msg();}}class BridgeEmail extends Bridge {public function msg() {echo "Email>>";}}class BridgeSms extends Bridge {public function msg() {echo "Sms>>";}}class Normal {public function msg() {echo "Normal<br>";}}class Danger {public function msg() {echo "Danger<br>";}}/** * 适配器模式 */class Serialize {public $content = NULL;public function __construct($content) {$this->content = serialize($content);}public function show() {return "序列化格式:<br>" . $this->content;}}class JsonAdapter extends Serialize {public function __construct($content) {parent::__construct($content);$tmp = unserialize($this->content);$this->content = json_encode($tmp, TRUE);}public function show() {return "Json格式:<br>" . $this->content;}}/** * 在投诉内容后自动追加 * 装饰器模式 */class Base {protected $_content = NULL;public function __construct($content) {$this->_content = $content;}public function getContent() {return $this->_content;}}class Decorator {private $_base = NULL;public function __construct(Base $base) {$this->_base = $base;}public function show() {return $this->_base->getContent() . ">>系统时间:" . date("Y-m-d H:i:s", time());}}/** * 分级举报处理功能 * 责任链模式 */class level1 {protected $_level = 1;protected $_top = "Level2";public function deal($level) {if ($level <= $this->_level) {echo "处理级别:1<br>";return;}$top = new $this->_top;$top->deal($level);}}class level2 {protected $_level = 2;protected $_top = "Level3";public function deal($level) {if ($level <= $this->_level) {echo "处理级别:2<br>";return;}$top = new $this->_top;$top->deal($level);}}class level3 {protected $_level = 3;protected $_top = "Level2";public function deal($level) {echo "处理级别:3<br>";return;}}if (!empty($_POST)) {echo "<h1>PHP设计模式</h1>";//连接数据库——工厂+单例模式$mysqlFactory = new MysqlFactory();$single = $mysqlFactory->createDB();$single->conn();echo "<br>";//观察者模式$username = $_POST["username"];$ob = new Observer($username);$a = new StyleA();$ob->attach($a);$b = new StyleB();$ob->attach($b);$ob->show();echo "<br>";$ob->detach($b);$ob->show();echo "<br>";//桥接模式$typeM = $_POST["typeM"];$typeN = "Bridge" . $_POST["typeN"];$obj = new $typeN(new $typeM);$obj->show();echo "<br>";//适配器模式$post = $_POST;$obj = new Serialize($post);echo $obj->show();echo "<br>";$json = new JsonAdapter($post);echo $json->show();echo "<br>";echo "<br>";//装饰器模式$content = $_POST["content"];$decorator = new Decorator(new Base($content));echo $decorator->show();echo "<br>";//责任链模式echo "<br>";$level = $_POST["level"];$deal = new Level1();$deal->deal(intval($level));return;}require("0.html");html代码:
<!DOCTYPE html><!--To change this license header, choose License Headers in Project Properties.To change this template file, choose Tools | Templatesand open the template in the editor.--><html><head><title>PHP设计模式</title><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><style>div{border:solid gray 1px;margin-top:10px;height: 100px;width: 200px;}</style></head><body><form action="0.php" method="post"><h1>用户名</h1><select id="username" name="username"><option value="Tom">Tom</option><option value="Lily">Lily</option></select><h1>投诉方式</h1><select id="type" name="typeM"><option value="Normal">Normal</option><option value="Danger">Danger</option></select><select id="type" name="typeN"><option value="Email">Email</option><option value="Sms">Sms</option></select><h1>处理级别</h1><select id="level" name="level"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select><h1>投诉内容</h1><textarea id="content" name="content" rows="3"></textarea><button type="submit">提交</button></form></body></html>以上就是本文的全部内容,希望对大家的学习有所帮助。