定制 xin/sms 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

xin/sms

最新稳定版本:v1.1.0

Composer 安装命令:

composer require xin/sms

包简介

基于 overtrue/easy-sms 的短信服务扩展包(适用于 Laravel、ThinkPHP 等主流框架),支持多种短信服务商,提供统一的 API 接口,方便在项目中集成短信发送功能

README 文档

README

概述

Xin\Sms 是一个基于 Overtrue\EasySms 的短信发送管理器,提供了统一的短信发送接口和多渠道支持。

核心组件

SmsManager 类

  • 继承自Xin\Capsule\Manager
  • 实现接口Xin\Sms\Contracts\Factory
  • 主要功能:管理短信发送渠道和配置

主要常量

  • DEFAULT_DRIVER_KEY:默认驱动键名,值为 'channel'
  • DRIVER_CONFIG_KEY:驱动配置键名,值为 'channels'

配置结构

默认配置

'defaults' => [
    'strategy' => OrderStrategy::class,  // 网关调用策略,默认顺序调用
    'gateways' => [],                   // 默认可用的发送网关
]

通道配置

  • 通道配置存储在 channels 键下
  • 每个通道可以有独立的配置参数

主要方法

1. 构造函数

  • 方法__construct(array $config = [])
  • 功能:初始化配置并合并默认配置

2. 通道管理

  • 方法channel($name = null)
  • 功能:获取指定名称的短信通道实例
  • 返回:通道实例

3. 驱动创建

  • 方法createDefaultDriver($name, array $config)
  • 功能:创建默认驱动实例
  • 返回HigherOrderEasySmsProxy 实例

4. 默认驱动管理

  • 获取默认驱动getDefaultDriver() - 返回 'default'
  • 设置默认驱动setDefaultDriver($name) - 设置默认驱动

5. 配置获取

  • 方法getDriverConfig($name)
  • 功能:获取指定驱动的配置信息

使用示例

基本使用

// 创建 SmsManager 实例
$smsManager = new Xin\Sms\SmsManager($config);

// 获取默认通道
$channel = $smsManager->channel();

// 获取指定名称的通道
$channel = $smsManager->channel('aliyun');

配置示例

$config = [
    'defaults' => [
        'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
        'channel' => 'default',
        'gateways' => [
            'aliyun',
            'qcloud'
        ],
    ],
    'channels' => [
        'aliyun' => [
            'access_key_id' => 'your-access-key',
            'access_key_secret' => 'your-secret-key',
            'sign_name' => 'your-sign-name',
        ],
        'qcloud' => [
            'sdk_app_id' => 'your-app-id',
            'secret_id' => 'your-secret-id',
            'secret_key' => 'your-secret-key',
        ]
    ]
];

内部服务

EasySms 服务

  • 方法easySmsService()
  • 功能:创建和管理 EasySms 实例
  • 配置转换:将 defaults 转换为 defaultchannels 转换为 gateways

注意事项

  1. 继承问题:代码中存在拼写错误,@inerhitDoc 应该是 @inheritDoc
  2. 配置键转换:在创建 EasySms 实例时,配置键会进行转换(defaultsdefaultchannelsgateways
  3. 代理模式:通过 HigherOrderEasySmsProxy 提供对底层 EasySms 网关的访问

扩展性

  • 支持多种短信网关
  • 支持策略模式(如顺序调用策略)
  • 可通过配置灵活切换不同的短信服务商

统计信息

  • 总下载量: 8
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2024-12-09