Deprecated
: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in
/www/wwwroot/testblog.58heshihu.com/var/Widget/Archive.php
on line
1057
首页
关于
Search
1
给你10个市场数据调研报告的免费下载网站!以后竞品数据就从这里找!
182 阅读
2
php接口优化 使用curl_multi_init批量请求
144 阅读
3
《从菜鸟到大师之路 ElasticSearch 篇》
107 阅读
4
2024年备考系统架构设计师
104 阅读
5
PHP 文件I/O
92 阅读
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
登录
Search
标签搜索
php函数
php语法
性能优化
安全
错误和异常处理
问题
vue
Composer
Session
缓存
框架
Swoole
api
并发
异步
正则表达式
php-fpm
mysql 索引
开发规范
协程
dafenqi
累计撰写
786
篇文章
累计收到
28
条评论
首页
栏目
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
副业
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
页面
关于
搜索到
3
篇与
的结果
2024-01-02
PHP 策略模式:用一个简单的例子快速入门
PHP 策略模式:用一个简单的例子快速入门策略模式是一种行为模式,将算法封装在独立的类中,使客户端可以独立于算法进行变化。换言之,策略模式允许客户端在运行时选择使用哪种算法,而无需修改代码。策略模式通常用于实现不同的行为,例如发送通知的方式。例如,您可以通过电子邮件、SMS 或 FCM 发送通知。策略模式允许您轻松地在这些不同的通知方法之间切换。例子: 以下 PHP 代码示例演示了如何使用策略模式发送通知:interface Sendable { public function send(): void; } class Mail implements Sendable { public function send(): void { echo "Notification send from: Mail \n"; } } class FCM implements Sendable { public function send(): void { echo "Notification send from: FCM \n"; } } class SMS implements Sendable { public function send(): void { echo "Notification send from: SMS \n"; } } class Notification { public Sendable $sendable; public function setSendable(Sendable $sendable): self { $this->sendable = $sendable; return $this; } public function notify() { return $this->sendable->send(); } } class SendVerificationEmail extends Notification {} class SendAnnouncementFCM extends Notification {} class SendOtpSMS extends Notification {} $email = new Mail(); (new SendVerificationEmail())->setSendable($email)->notify(); // 通知发送自: Mail $fcm = new FCM(); (new SendAnnouncementFCM())->setSendable($fcm)->notify(); // 通知发送自: FCM $sms = new SMS(); (new SendOtpSMS())->setSendable($sms)->notify(); // 通知发送自:SMS 在该示例中,我们定义了 Sendable 接口,该接口包含单个 send() 方法。该接口有三个具体实现:Mail、FCM 和 SMS。这些具体实现提供了发送通知的不同方式。Notification类 是使用策略模式发送通知的客户端代码。该类具有一个名为 sendable 的属性,用于存储 Sendable 对象的引用。该类的 notify() 方法只是调用 sendable 对象的 send() 方法。要发送通知,首先需要创建一个 Notification 对象,并向其传递接口的具体实现 Sendable。例如,要发送验证电子邮件,可以执行以下操作:$email = new Mail(); (new SendVerificationEmail())->setSendable($email)->notify();这样做将创建一个新的 SendVerificationEmail 对象,并将其 sendable 属性设置为 Mail 对象。然后,notify() 方法将调用 Mail 对象的 send() 方法,该方法将发送验证电子邮件。// 通知发送自:Mail 使用策略模式的好处: 策略模式提供了许多好处,包括:灵活性:策略模式将算法封装在独立的类中,允许在运行时动态更改算法的使用。这对于支持多种算法或根据上下文更改算法的情况非常有用。可重用性:策略模式通过将算法封装成独立的类,实现了算法在不同上下文的复用。这有助于减少代码重复,提高代码的可维护性。可测试性:策略模式将算法封装在独立的类中,使得每个算法都可以单独进行测试。这有助于提高代码的可测试性,确保代码的正确性。策略模式是一种强大的模式,可以用于实现同一行为的不同算法。它具有高度的灵活性、可重用性和可测试性,可以帮助您编写更优雅、更可靠的代码。
2024年01月02日
12 阅读
0 评论
0 点赞
2024-01-02
外观模式:简化复杂 PHP 代码的工具
外观模式:简化复杂 PHP 代码的工具各位开发者,大家好!今天,我将介绍 PHP 中一种方便的设计模式:外观模式。外观模式可以使您的代码更易于管理且更易于使用。我将解释外观模式是什么、为什么它有价值,并用一个实例来演示它。什么是外观模式?外观模式是一种结构型设计模式,它提供一个统一的接口来访问子系统。它充当客户端代码和子系统内部复杂性的桥梁,从而促进松散耦合和代码模块化。为什么使用外观模式?您可能想知道为什么要使用外观模式。以下是一些令人信服的理由:简化复杂性:外观模式为复杂系统提供了一个简化、易于理解的接口。这使客户端可以使用系统的功能,而无需了解其内部工作原理。封装子系统:外观模式封装了子系统的内部工作原理,使客户端代码与子系统解耦。这使得代码更易于理解、维护和扩展。增强可维护性:外观模式使您能够在不影响客户端代码的情况下对子系统进行更改。这使得代码库更具弹性和适应性。现实示例:在线购物车让我们通过一个实际示例来看看外观模式的实际应用:用 PHP 构建一个在线购物车系统。第 1 步:创建子系统在我们的购物车系统中,我们有三个主要组件:库存系统:检查产品可用性。定价系统:计算总价。结帐系统:处理订单。这是这些类的简化版本:class InventorySystem { public function checkAvailability($productId, $quantity) { // 检查产品是否可用。 } } class PricingSystem { public functioncalculatePrice($productId, $quantity) { // 计算总价。 } } class CheckoutSystem { public function processOrder($product) { // 处理订单。 } }第 2 步:创建外观现在,我们来创建一个“ShoppingCartFacade”来简化客户端与子系统的交互:class ShoppingCartFacade { private $inventory; private $pricing; private $checkout; public function __construct() { $this->inventory = new InventorySystem(); $this->pricing = new PricingSystem(); $this->checkout = new CheckoutSystem(); } public function checkout($cart) { foreach ($cart as $product) { $productId = $product['id']; $quantity = $product['quantity']; if ($this->inventory->checkAvailability($productId, $quantity)) { $totalPrice = $this->pricing->calculatePrice($productId, $quantity); $this->checkout->processOrder(['id' => $productId, 'quantity' => $quantity, 'price' => $totalPrice]); } else { echo "Product ID: $productId is unavailable."; } } } }第三步:使用外观有了“ShoppingCartFacade”,客户可以通过一个简单的接口与购物车系统进行交互,而无需了解子系统的复杂性。它简化了签出过程:$cartFacade = new ShoppingCartFacade(); $cart = [ ['id' => 1, 'quantity' => 2], ['id' => 2, 'quantity' => 1], ['id' => 3, 'quantity' => 5], ]; $cartFacade->checkout($cart);外观模式是设计模式工具箱中的一个强大的工具。它可以简化复杂系统,使代码更加模块化和可维护。在我们的示例中,我们将其应用于在线购物车系统,提供了一种清晰简单的方式来处理与子系统的交互。外观模式就像是复杂代码的友好接口,使其更易于使用和维护。在您的项目中尝试一下,您就会体验到它如何简化开发过程。
2024年01月02日
11 阅读
0 评论
0 点赞
2023-08-09
PHP设计模式
PHP设计模式阅读文档
2023年08月09日
18 阅读
0 评论
0 点赞