xin / sms
基于 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
Requires
- php: >=7.1.9
- overtrue/easy-sms: ^3.0
- xin/capsule: ^1.0
- xin/support: ^1.0
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转换为default,channels转换为gateways
注意事项
- 继承问题:代码中存在拼写错误,
@inerhitDoc应该是@inheritDoc - 配置键转换:在创建
EasySms实例时,配置键会进行转换(defaults→default,channels→gateways) - 代理模式:通过
HigherOrderEasySmsProxy提供对底层EasySms网关的访问
扩展性
- 支持多种短信网关
- 支持策略模式(如顺序调用策略)
- 可通过配置灵活切换不同的短信服务商