用途:指导在 Bitrix 中按场景选择状态存储。部署期配置/密钥用 .settings_extra.php 或 env;管理员可改的常驻模块设置用 Config\Option 配合 default_option.php;功能开关与按用户灰度用 Config\Feature;需存活 N 秒的服务器状态用 PersistentStorageInterface;派生数据用缓存,访客级状态用 session,大对象用文件。不要用 Option 存高频运行时状态,也不要用持久存储存密钥。
Option:Option::get 读取(回退 default_option.php),Option::set 写入,getRealValue 区分未设置与默认值,getForModule 取全部,delete 删除。值均为字符串,需在边界转换。set 会清缓存、触发 option_triggers.php 与 OnAfterSetOption 事件,不适合每次请求写入。可传 $siteId 做站点覆盖,空站点为全局。
Feature(main 26.700 起):在模块 lib/ 中定义继承 AbstractFlag 的标志类,通过 Feature::isEnabled、Feature::allow、Feature::enable、Feature::resetToDefault 使用;判定顺序为 requirements→deny→allow→存储值→enabledByDefault。规则可用 UserIdRule、ModuleMinVersionRule 或自定义。注意:未知或无法加载的标志类返回 true;模块未安装时 enable/disable 静默失效,勿在 php_interface 定义;配置缓存 24 小时,直改表后需 clearCache。
持久存储(main 25.1100 起):从 ServiceLocator 取 PersistentStorageInterface,使用 set(key, value, ttl)、get、delete;PSR-16,数据库支持,键不超过 255 字符,值需可 JSON 序列化,TTL 为正整数秒或 DateInterval,建议不超过 7 天,不支持 clear()。DeferredStorageDecorator 可缓冲写入至 save()。