php怎么写游戏投诉接口,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单例创建成功
';

}

final protected function __clone() {

return false;

}

public function conn() {

echo 'Mysql连接成功
';

}

}

/**

* 工厂模式

*/

interface Factory {

function createDB();

}

class MysqlFactory implements Factory {

public function createDB() {

echo 'Mysql工厂创建成功
';

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
';

}

}

class StyleB implements SplObserver {

public function update(SplSubject $subject) {

echo $subject->_style . ' 模块B
';

}

}

/**

* 根据不同方式进行投诉

* 桥接模式

*/

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
';

}

}

class Danger {

public function msg() {

echo 'Danger
';

}

}

/**

* 适配器模式

*/

class Serialize {

public $content = NULL;

public function __construct($content) {

$this->content = serialize($content);

}

public function show() {

return '序列化格式:
' . $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格式:
' . $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
';

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
';

return;

}

$top = new $this->_top;

$top->deal($level);

}

}

class level3 {

protected $_level = 3;

protected $_top = 'Level2';

public function deal($level) {

echo '处理级别:3
';

return;

}

}

if (!empty($_POST)) {

echo '

PHP设计模式

';

//连接数据库——工厂+单例模式

$mysqlFactory = new MysqlFactory();

$single = $mysqlFactory->createDB();

$single->conn();

echo '
';

//观察者模式

$username = $_POST['username'];

$ob = new Observer($username);

$a = new StyleA();

$ob->attach($a);

$b = new StyleB();

$ob->attach($b);

$ob->show();

echo '
';

$ob->detach($b);

$ob->show();

echo '
';

//桥接模式

$typeM = $_POST['typeM'];

$typeN = 'Bridge' . $_POST['typeN'];

$obj = new $typeN(new $typeM);

$obj->show();

echo '
';

//适配器模式

$post = $_POST;

$obj = new Serialize($post);

echo $obj->show();

echo '
';

$json = new JsonAdapter($post);

echo $json->show();

echo '
';

echo '
';

//装饰器模式

$content = $_POST['content'];

$decorator = new Decorator(new Base($content));

echo $decorator->show();

echo '
';

//责任链模式

echo '
';

$level = $_POST['level'];

$deal = new Level1();

$deal->deal(intval($level));

return;

}

require("0.html");

html代码:

PHP设计模式

div{border:solid gray 1px;margin-top:10px;height: 100px;width: 200px;}

用户名

Tom

Lily

投诉方式

Normal

Danger

Email

Sms

处理级别

1

2

3

投诉内容

提交

以上就是本文的全部内容,希望对大家的学习有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值