xin/sms

There is no license information available for the latest version (v1.1.0) of this package.

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

Installs: 8

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/xin/sms

v1.1.0 2025-12-24 05:10 UTC

This package is auto-updated.

Last update: 2025-12-26 15:43:35 UTC


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 网关的访问

扩展性

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