国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP設(shè)計模式之簡單投訴頁面實例

2024-05-04 23:43:18
字體:
供稿:網(wǎng)友
這篇文章主要為大家詳細(xì)介紹了PHP設(shè)計模式下簡單投訴頁面實例,感興趣的小伙伴們可以參考一下
 

本文實例介紹了PHP簡單投訴頁面的實現(xiàn)代碼,分享給大家供大家參考,具體內(nèi)容如下

php代碼:

<?php/* * 設(shè)計模式練習(xí) * 1.數(shù)據(jù)庫連接類(單例模式) * 2.調(diào)用接口實現(xiàn)留言本功能(工廠模式) * 3.實現(xiàn)分級舉報處理功能(責(zé)任鏈模式) * 4.發(fā)送不同組合的舉報信息(橋接模式) * 5.發(fā)送不同格式的舉報信息(適配器模式) * 6.在投訴內(nèi)容后自動追加時間(裝飾器模式) * 7.根據(jù)會員登錄信息變換顯示風(fēng)格(觀察者模式) * 8.根據(jù)發(fā)帖長度加經(jīng)驗值(策略模式) */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單例創(chuàng)建成功<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工廠創(chuàng)建成功<br>';    return MysqlSingle::getInstance();  }}/** * 根據(jù)用戶名顯示不同風(fēng)格 * 觀察者模式 */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>';  }}/** * 根據(jù)不同方式進(jìn)行投訴 * 橋接模式 */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;  }}/** * 在投訴內(nèi)容后自動追加 * 裝飾器模式 */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() . '>>系統(tǒng)時間:' . date('Y-m-d H:i:s', time());  }}/** * 分級舉報處理功能 * 責(zé)任鏈模式 */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設(shè)計模式</h1>';  //連接數(shù)據(jù)庫——工廠+單例模式  $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>';  //責(zé)任鏈模式  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設(shè)計模式</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>投訴內(nèi)容</h1>      <textarea id="content" name="content" rows="3"></textarea>      <button type="submit">提交</button>    </form>  </body></html>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。



注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 吴桥县| 曲周县| 灵石县| 芒康县| 博客| 双鸭山市| 礼泉县| 榕江县| 长兴县| 海南省| 弥渡县| 阿拉善右旗| 台北县| 湟中县| 新河县| 玛纳斯县| 扎囊县| 仁化县| 洛阳市| 准格尔旗| 广西| 宁波市| 昆明市| 星子县| 通渭县| 乌拉特后旗| 泸水县| 临夏市| 阜平县| 成安县| 嘉峪关市| 沁水县| 托克托县| 山阴县| 万宁市| 英吉沙县| 鸡东县| 陆丰市| 泽普县| 兰州市| 化德县|