PHP design pattern simple complaint page example_php skills
This article introduces the implementation code of a simple complaint page in PHP and shares it with you for your reference. The specific content is as follows
php code:
<?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 code:
<!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>
The above is the entire content of this article, I hope it will be helpful to everyone’s study.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.
