diff --git a/src/AKSRT/Settings/Settings.php b/src/AKSRT/Settings/Settings.php index 98d446ac..43703d37 100644 --- a/src/AKSRT/Settings/Settings.php +++ b/src/AKSRT/Settings/Settings.php @@ -19,7 +19,42 @@ class Settings { private static $instance = null; use FacadeBulk; + /** + * Per-request memoization of merged settings. + * + * 同一请求内多次调用 get_all() 仅读 1 次 option。 + * 后端写入 option 时通过 updated_option hook 失效。 + * + * @var array|null + */ + private static $cached_all = null; + /** + * 所有独立 option key(非 aksrt_settings)。 + * 用于导入导出完整性检查。 + */ + public const STANDALONE_OPTION_KEYS = [ + 'aksrt_mail_smtp', + 'aksrt_oauth', + 'aksrt_captcha_config', + 'aksrt_moderation_config', + 'aksrt_footer_settings', + 'aksrt_footer_tabbar', + 'aksrt_floating_buttons', + 'aksrt_credit_settings', + 'aksrt_notification_settings', + 'aksrt_friend_links', + 'aksrt_banners', + 'aksrt_category_recommend', + ]; + + /** + * 包含 secret 字段的 option key — 空值保留旧值策略。 + */ + public const SECRET_OPTION_KEYS = [ + 'aksrt_mail_smtp', + 'aksrt_oauth', + ]; private function __construct() {}