Files
pk10/App/Core/SettingsHelper.php
T

80 lines
2.2 KiB
PHP
Executable File

<?php
namespace App\Core;
use Db\Database;
class SettingsHelper {
private static $settings = null;
/**
* 获取所有系统设置
*/
public static function getAll() {
if (self::$settings !== null) {
return self::$settings;
}
try {
$db = new Database();
// 尝试查询设置(如果表不存在会抛出异常,被catch捕获)
try {
$settings = $db->select('system_settings', ['setting_key', 'setting_value']);
} catch (\Exception $e) {
// 表不存在或其他错误,返回默认值
self::$settings = self::getDefaults();
return self::$settings;
}
$result = [];
foreach ($settings as $setting) {
$result[$setting['setting_key']] = $setting['setting_value'];
}
// 合并默认值
$defaults = self::getDefaults();
foreach ($defaults as $key => $value) {
if (!isset($result[$key])) {
$result[$key] = $value;
}
}
self::$settings = $result;
return $result;
} catch (\Exception $e) {
// 出错时返回默认值
return self::getDefaults();
}
}
/**
* 获取单个设置值
*/
public static function get($key, $default = '') {
$settings = self::getAll();
return isset($settings[$key]) ? $settings[$key] : $default;
}
/**
* 获取默认设置值
*/
private static function getDefaults() {
return [
'site_title' => 'PK10 Speed Racing',
'site_description' => 'PK10 Speed Racing - Online Betting Platform',
'site_keywords' => 'pk10, speed racing, betting, online game',
'site_logo' => '/Static/images/logo.png',
'site_favicon' => '/Static/css/favicon.ico',
'site_copyright' => '© 2025 PK10 Racing. All rights reserved.'
];
}
/**
* 清除缓存(当设置更新后调用)
*/
public static function clearCache() {
self::$settings = null;
}
}