美文网首页
分享一个用tp6封装的短信宝短信发送类库

分享一个用tp6封装的短信宝短信发送类库

作者: 开心弟弟 | 来源:发表于2020-05-12 11:14 被阅读0次
在实际应用场景中,短信发送是基本的业务需求,本篇文章将简化了繁琐的封装,让短信发送更简单简洁,短信接口用的是短信宝的,申请地址:http://www.smsbao.com本文的demo是用的tp6框架,自己稍微修改一下 基本是通用的,代码带了详细的注释,通俗一档,这里的模板我是放在数据库里面的,小伙伴可以根据自己的业务,去修改,类库用到了单例模式。

使用方法,直接调用

<?php
SmsBao::getInstance()->setTemplate('sms_register_template')->send('1888888888', true);

类库代码

<?php
namespace app\common\lib;

use app\common\model\Config;

/**
* 短信相关 短信宝申请地址:http://smsbao.com
*/
class SmsBao{
    //短信宝签名
    private $sms_sign = '';
    //短信宝账号
    private $sms_user = '';
    //短信宝密码
    private $sms_pass = '';
    //当前使用的短信模板
    private $sms_template = '';
    //单例变量
    private static $_instance = null;

    //获取配置信息
    private function __construct(){
        $this->sms_sign = Config::getValueInfo('sms_sign');
        $this->sms_user = Config::getValueInfo('sms_user');
        $this->sms_pass = Config::getValueInfo('sms_pass');
    }


    /**
     * 获取单例对象
     * @return object
     */
    public static function getInstance(){
        if(empty(self::$_instance)){
            self::$_instance = new self();
        }
        return self::$_instance;
    }

    /**
     * 获取短信模板
     * @param key 键
     * @return string
     */
    public function setTemplate($key){
        $this->sms_template = Config::getValueInfo($key);
        return $this;
    }

    /**
     * 发送短信
     * @param $mobile string 要发送的手机号
     * @param $flag bool 是否是验证码短信
     * @return bool
     */
    public function send($mobile, $flag = false){
        if($flag){
            //生成验证码
            $code = IAuth::setVerificationCode($mobile);
            //将验证码替换到 字符串中
            $this->sms_template = str_replace('{code}', $code, $this->sms_template);
        }

        return $this->smsBaoSend($mobile, $this->sms_template);
    }


    /**
     * 实际的发送短信工作
     * @param  $mobile string 要发送的手机号
     * @param  $content string 要发送的内容
     * @return bool
     */
    private function smsBaoSend($mobile, $content){
        $statusStr = [
            "0" => "短信发送成功",
            "-1" => "参数不全",
            "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
            "30" => "密码错误",
            "40" => "账号不存在",
            "41" => "余额不足",
            "42" => "帐户已过期",
            "43" => "IP地址限制",
            "50" => "内容含有敏感词"
        ];
        $smsapi = "http://api.smsbao.com/";

        $user = $this->sms_user; //短信平台帐号
        $pass = md5($this->sms_pass); //短信平台密码

        $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$mobile."&c=".urlencode($this->sms_sign . $content);
        $result =file_get_contents($sendurl);

        return $result == 0;
    }
}

相关文章

网友评论

      本文标题:分享一个用tp6封装的短信宝短信发送类库

      本文链接:https://www.haomeiwen.com/subject/dttnnhtx.html