群控系统服务端开发模式-应用开发-短信工厂结构封装

server/2024/12/3 5:47:03/

        首先在系统根目录下extend文件夹下创建短信工厂文件夹并更名叫Sms。

一、短信发送父类

        在Sms目录下创建短信发送父类并更名为SmsSenderInterface.php,代码如下

<?php
/*** 短信发送父类* User: 龙哥 三年风水* Date: 2024/12/1/0001* Time: 15:52*/
namespace Sms;
interface SmsSenderInterface
{/*** 单条短信发送* 内部json处理过* User: 龙哥·三年风水* Date: 2024/12/1/0001* Time: 15:52* @ param $mobile 要发送的对象* @ param $templateCode 模板编号* @ param $templateParam 模板对应参数* @ param string $signName 签名(如果需要采用不同的签名才需要传参)* @ return mixed*/public static function send($mobile,$templateCode,$templateParam,$signName = '');
}

二、具体类实现

        在Sms目录下创建文件夹并命名为channel,然后在channel文件夹下,创建阿里云短信发送类、七牛云短信发送类、腾讯云短信发送类等,代码如下

<?php
/*** 阿里云短信发送类* User: 龙哥 三年风水* Date: 2024/12/1/0001* Time: 16:46*/
namespace Sms\channel;
use Sms\SmsSenderInterface;
class AliyunSmsSender implements SmsSenderInterface
{protected static $signName = "";protected static $accessKeyId = "";protected static $accessKeySecret = "";public function __construct($param){self::$accessKeyId = $param['access_key_id'];self::$accessKeySecret = $param['access_key_secret'];self::$signName = $param['sign_name'];}/*** 单条短信发送* 内部json处理过* User: 龙哥·三年风水* Date: 2024/12/1/0001* Time: 15:52* @ param $mobile 要发送的对象* @ param $templateCode 模板编号* @ param $templateParam 模板对应参数* @ param string $signName 签名(如果需要采用不同的签名才需要传参)* @ return mixed*/public static function send($mobile, $templateCode, $templateParam, $signName = ''){// TODO: Implement send() method.}
}

三、短信发送类实例

        在Sms目录下创建短信发送类实例并更名为SmsSenderFactory.php,具体代码如下:

<?php
/*** 创建短信发送类实例工厂* User: 龙哥 三年风水* Date: 2024/12/1/0001* Time: 15:59*/
namespace Sms;
use Sms\channel\AliyunSmsSender;
use Sms\channel\QiniuyunSmsSender;
use Sms\channel\TencentSmsSender;
use Error\BaseError;
use app\model\param\Emailsms;
use app\model\param\Sms;
class SmsSenderFactory
{protected static $instance=null;//缓存实例protected static $channel = [];//通道参数protected static $smsType = 0;//通道类型public function __construct(){$smsId = Emailsms::dataFind(['id' => 1],'sms_id');var_dump($smsId);exit;}/*** 调用类实例* User: 龙哥 三年风水* Date: 2024/12/1/0001* Time: 15:59* @ return null|AliyunSmsSender|QiniuyunSmsSender|TencentSmsSender*/public static function create(){switch (self::$smsType){case 1:self::$instance = new AliyunSmsSender(self::$channel);break;case 2:self::$instance = new QiniuyunSmsSender(self::$channel);break;case 3:self::$instance = new TencentSmsSender(self::$channel);break;default:self::$instance = null;throw new BaseError("未设置任何短信发送通道",50000,200);break;}return self::$instance;}
}

四、提前说明

        下个星期将完成短信工厂类封装及测试。


http://www.ppmy.cn/server/146939.html

相关文章

NaviveUI框架的使用 ——安装与引入(图标安装与引入)

文章目录 概述安装直接引入引入图标样式库 概述 &#x1f349;Naive UI 是一个轻量、现代化且易于使用的 Vue 3 UI 组件库&#xff0c;它提供了一组简洁、易用且功能强大的组件&#xff0c;旨在为开发者提供更高效的开发体验&#xff0c;特别是对于构建现代化的 web 应用程序。…

C 语言学习的经典书籍有哪些?

学习C语言的理由 C语言是一种程席设计语言&#xff0c;它是由美国AT&T公司贝尔实验室的Dennis Ritchie于1972年发明的。C语言之所以流行&#xff0c;是因为它简单易用。学习C语言的几个理由如下&#xff1a; (1)C、C#和Java使用一种被称为面向对象程序设计(0bject-Orient…

Vue基本语法

Options API 选项式/配置式api 需要在script中的export default一个对象对象中可以包含data、method、components等keydata是数据&#xff0c;数据必须是一个方法&#xff08;如果是对象&#xff0c;会导致多组件的时候&#xff0c;数据互相影响&#xff0c;因为对象赋值后&…

C++草原三剑客之一:继承

为王的诞生献上礼炮吧&#xff01; 目录 1 继承的概念及其定义 1.1 继承的概念 1.2 继承的定义 1.2.1 定义格式 1.2.2 继承方式以及继承基类成员访问方式的变化 1.3 继承类模板 2 基类和派生类之间的转换 3 继承中的作用域 3.1 隐藏规则 3.2 两道考察继承作用的相关…

ComfyUI | ComfyUI桌面版发布,支持winmac多平台体验,汉化共享等技巧!(内附安装包)

ComfyUI 桌面版正式推出&#xff0c;支持 Windows 与 macOS 等多平台&#xff0c;为 AI 绘画爱好者带来全新体验。其安装包便捷易用&#xff0c;开启了轻松上手之旅。汉化共享功能更是一大亮点&#xff0c;打破语言障碍&#xff0c;促进知识交流与传播。在操作上&#xff0c;它…

008静态路由-特定主机路由

按照如上配置&#xff0c;用192.168.0.1 电脑ping 192.168.1.1 发现能够ping通 用192.168.0.1 电脑ping 192.168.2.1 发现不能ping通 这是因为192.168.0.1 和 192.168.1.1 使用的是同一个路由器R1。 192.168.0.1 和 192.168.2.1 通信需要先经过R1&#xff0c;再经过R2 &#xf…

docker快速部署kafka

一、创建docker网络 docker network create net 二、部署zookeeper docker快速安装zookeeper-CSDN博客 注意:启动zookeeper时&#xff0c;需要加入docker网络,增加 --net net 参数 三、拉取kafka镜像 docker pull wurstmeister/kafka docker pull wdkang/kafka-console-ui 四…

如何在WPF中打印PDF文件

最近遇到有客户需要打印PDF的需求&#xff0c;这里分享一下两种解决方案&#xff1a; 1、使用"谓词(verb)" 当用户右键单击 Shell 对象&#xff08;如文件&#xff09;时&#xff0c;Shell 会显示 (上下文) 菜单的快捷方式。 此菜单包含一个命令列表&#xff0c;用户…