大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
场景:使用工厂模式接入:阿里短信验证、腾讯短信验证、百度短信验证
创建类文件
BaseSMS.php
– 基础短信服务接口类AliSMS.php
– 阿里短信服务类BaiduSMS.php
– 百度短信服务类TencentSMS.php
– 腾讯短信服务类SmsBusiness.php
– 短信业务逻辑类
具体代码
BaseSMS.php
– 基础短信服务接口类
interface BaseSMS
{
public static function sendCode($phone, $code);
}
AliSMS.php
– 阿里短信服务类
class AliSMS implements BaseSMS
{
public static function sendCode($phone, $code){
// 这里是阿里云短信服务代码
// XXXXXXXXXXXXXXXXXXXXX
return '阿里云短信验证码发送成功';
}
}
BaiduSMS.php
– 百度短信服务类
class BaiduSMS implements BaseSMS
{
public static function sendCode($phone, $code){
// 这里是百度云短信服务代码
// XXXXXXXXXXXXXXXXXXXXX
return '百度云短信验证码发送成功';
}
}
TencentSMS.php
– 腾讯短信服务类
class TencentSMS implements BaseSMS
{
public static function sendCode($phone, $code){
// 这里是腾讯云短信服务代码
// XXXXXXXXXXXXXXXXXXXXX
return '腾讯云短信验证码发送成功';
}
}
SmsBusiness.php
– 短信业务逻辑类
class SmsBusiness
{
public static function sendCode($phone, $len = 4, $type){
// 生成短信验证码
$code = mt_rand(1000,9999); // 默认为4位数验证码
if ($len == 6){
// 长度为6,则生成6位数验证码
$code = mt_rand(100000,999999);
}
// 工厂模式创建不同的短信服务商
$smsObj = null;
switch($type){
case 'ali':
$smsObj = new AliSMS();
break;
case 'baidu':
$smsObj = new BaiduSMS();
break;
case 'tencent':
$smsObj = new TencentSMS();
break;
}
$sms = $smsObj::sendCode($phone, $code);
if ($sms) {
// 成功:把短信验证码记录到 redis, 并且设置失效时间
cache(config('stores.redis.prefix') . $phone, $code, config('stores.redis.expire'));
}
return true;
}
}
最后,控制器调用 业务逻辑层短信发送验证码服务
class SMSController {
public function code (){
$phone = request()->param('phone_number', '', 'trim');
/* * 这里是参数验证,略 */
// 调用业务逻辑层的sendCode
if (SmsBusiness::sendCode($phoneNumber, config('code.code.length'), 'ali')){
return show(config('status.success'), '验证码发送成功');
}
return show(config('status.error'), '验证码发送失败');
}
}
——- THE END ——-
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/164357.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...