refactor(classes): organize inc/classes into domain folders
Move ~94 root class shells and root *-traits into domain directories (core, auth, user, credits, content, payment/gateways, forum, shop, sms, ai, messages, extensions, widgets, settings, admin). Update bootstrap require paths, co-locate traits with owners, fix forum/user relative requires, drop duplicate shop controller requires, and wire home-modules load. Path-only; class names and init order unchanged.
This commit is contained in:
1 parent
2a8fe68048
commit
ce1c13b947
115 files changed
+171
-224
No files matched your search
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/**
|
||||
* AKSRT SMS Provider Factory
|
||||
*
|
||||
* 根据 provider key 返回对应的 adapter 实例。
|
||||
* 内部维护静态注册表,避免重复实例化。
|
||||
*
|
||||
* @package AKSRT
|
||||
*/
|
||||
|
||||
defined('ABSPATH') || exit;
|
||||
|
||||
class AKSRT_SMS_Provider_Factory {
|
||||
|
||||
private static $providers = [];
|
||||
|
||||
/**
|
||||
* 获取供应商 adapter 实例
|
||||
*/
|
||||
public static function get(string $key): ?AKSRT_SMS_Provider {
|
||||
$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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有已注册供应商
|
||||
*
|
||||
* @return AKSRT_SMS_Provider[]
|
||||
*/
|
||||
public static function all(): array {
|
||||
$keys = ['aliyun', 'tencent', 'huawei', 'custom'];
|
||||
$result = [];
|
||||
foreach ($keys as $key) {
|
||||
$provider = self::get($key);
|
||||
if ($provider !== null) {
|
||||
$result[$key] = $provider;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建 adapter 实例
|
||||
*/
|
||||
private static function create(string $key): ?AKSRT_SMS_Provider {
|
||||
switch ($key) {
|
||||
case 'aliyun':
|
||||
return class_exists('AKSRT_SMS_Provider_Aliyun') ? new AKSRT_SMS_Provider_Aliyun() : null;
|
||||
case 'tencent':
|
||||
return class_exists('AKSRT_SMS_Provider_Tencent') ? new AKSRT_SMS_Provider_Tencent() : null;
|
||||
case 'huawei':
|
||||
return class_exists('AKSRT_SMS_Provider_Huawei') ? new AKSRT_SMS_Provider_Huawei() : null;
|
||||
case 'custom':
|
||||
return class_exists('AKSRT_SMS_Provider_Custom') ? new AKSRT_SMS_Provider_Custom() : null;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user