Files
wordpress-theme-aksrt/src/Sms/SMSProviderFactory.php
T

48 lines
1.2 KiB
PHP

<?php
/**
* @package AKSRT
*/
namespace AKSRT\Sms;
defined('ABSPATH') || exit;
class SMSProviderFactory {
private static $providers = [];
/**
* 获取供应商 adapter 实例
*/
public static function get(string $key): ?ProviderInterface {
$key = sanitize_key($key);
if ($key === '') return null;
if (isset(self::$providers[$key])) {
return self::$providers[$key];
}
$instance = self::create($key);
if ($instance !== null) {
self::$providers[$key] = $instance;
}
return $instance;
}
/**
* 创建 adapter 实例
*/
private static function create(string $key): ?ProviderInterface {
switch ($key) {
case 'ali':
return class_exists('AKSRT\\Sms\\SMSProviderAliyun') ? new SMSProviderAliyun() : null;
case 'tencent':
return class_exists('AKSRT\\Sms\\SMSProviderTencent') ? new SMSProviderTencent() : null;
case 'smsbao':
return class_exists('AKSRT\\Sms\\SMSProviderSmsbao') ? new SMSProviderSmsbao() : null;
default:
return null;
}
}
}