---恢复内容开始---

<?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");

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and 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>

转载于:https://www.cnblogs.com/tlxma/p/5210641.html

PHP设计模式练习——制作简单的投诉页面相关推荐

  1. html+css 制作简单QQ登录页面

    HTML+css制作简单QQ登录页面 这是效果图 这是HTML源码 <!DOCTYPE html> <html lang="zh"><head> ...

  2. 使用HTML制作简单的新闻页面

    这次我们学习的是如何使用HTML制作简单的新闻页面 完成效果如下图所示: 进行效果分析 制作结构 首先打开dw 创新文件夹(前面已经讲过了) 将所要展示的文字输入在<body>标签内 水平 ...

  3. 用PHP制作简单的登录页面

    题目要求: 登录页面:设计一个登录页面,获取登录表单中的用户名和密码,如果用户名为"admin",密码为"123456",则提示登录成功.效果参考下图: 代码: ...

  4. 前端制作简单的“注册页面——阅读协议”页面及效果

    注:如对文中的scrollHeight.scrollTop.clientHeight属性有所一伙,请参考博文"JavaScript中元素client.offset.scroll相关属性的应用 ...

  5. php用户注册功能设计,利用HTML+CSS设计一个简单的用户注册页面【示例】

    本篇文章将要给新手小白们介绍如何使用HTML和css制作简单的注册页面.在开发网站过程中,如果网站内容要求是完善的信息站,那么肯定就离不开用户注册的这个功能.这个用户注册界面对于刚入门的前端新手来说, ...

  6. php投诉单页源码,PHP设计模式之简单投诉页面实例_PHP

    本文实例介绍了PHP简单投诉页面的实现代码,分享给大家供大家参考,具体内容如下 php代码: '; } final protected function __clone() { return fals ...

  7. android页面布局计算机,Android Studio制作简单计算器App

    Android Studio制作简单计算器App 计算机界面如图: 程序设计步骤: (1)在布局文件中声明编辑文件框EditText,按钮Button等组件. (2)在MainActivity中获取组 ...

  8. 网页制作 Html制作简单而漂亮的登录页面

    网页制作 Html制作简单而漂亮的登录页面 先来看看样子. html源码: XML/HTML Code复制内容到剪贴板 > <htmllang="en"> < ...

  9. HTML5期末大作业:动漫网站设计——简单页面-名侦探柯南动漫(2页) 动漫网页设计制作 简单静态HTML网页作品 漫画作业成品 学生影视网站模板

    HTML5期末大作业:动漫网站设计--简单页面-名侦探柯南动漫(2页) 动漫网页设计制作 简单静态HTML网页作品 漫画作业成品 学生影视网站模板 常见网页设计作业题材有 个人. 美食. 公司. 学校 ...

最新文章

  1. C++搞懂深拷贝初始化=与赋值(运算符重载)=的区别
  2. JAVA设计模式之门面模式(外观模式)
  3. spring vo是什么_DO、VO、DTO...XXOO,你弄明白了么
  4. admin——django自带数据库管理工具
  5. html360度视角观赏,360度全景图是如何生成的?
  6. 她说她女儿(JAVASCRIPT小时的玩伴,也姓杨)
  7. 计算机系统应用的书,基于领域本体与上下文感知计算的智能图书-计算机系统应用.PDF...
  8. SQLi LABS Less 10 时间盲注
  9. 设计方案--如何设计移动端高清方案
  10. 放生切勿盲目,放生动物要有选择
  11. 打印网页去掉网址html,Print Edit WE插件,编辑\隐藏\删除网页元素,并支持保存和打印新页面...
  12. 动手了!限19天,大米云主机满10送2手慢无!
  13. 什么是数据挖掘,机器学习与数据挖掘主要有什么联系?
  14. web record 前端页面录屏 (react + typescript)
  15. 【paddlepaddle安装报错系列】DLL lond failed:找不到指定模块
  16. 开源魔兽世界私服搭建
  17. PowerDesigner画ER图详细教程
  18. opc是什么? opc ua是什么?
  19. 开关电源PCB走线的时候需要注意什么?
  20. IT项目管理最佳实践(综合篇)

热门文章

  1. php 租房子(练习题)
  2. c# 基本语法(转)
  3. 【转】使用 F#、MapReduce 和 Windows Azure 分析日志文件
  4. 城市轨道交通运营票务管理论文_城市轨道交通运营企业的票务组织管理
  5. 传统企业安全vs互联网企业安全vs云安全
  6. 华为鸿蒙理性,华为的理性,鸿蒙的节奏
  7. 基于xilinx FPGA实现LZW压缩算法
  8. (71)FPGA面试题-使用不同的代码实现2-4译码器?使用case语句
  9. 生成top图_最小生成树(Kruskal和Prim算法)
  10. VSCODE打开野火电机代码需要增加的配置 c_cpp_properties.json