ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 设置管理器(Options) ## 简介 本质上,Options属于一种数据容器,但它不用于遍历二维数组,只是用于管理键值对。它的数据对应options表中的数据,读取时进行缓存,写入时不立即写入数据库,程序结束后一并写入,大大提高执行效率(减少查询次数)。它通过魔术方法支持访问“成员变量”来获取uid=0的数据,支持访问“成员方法”来回显uid=0的数据,还支持通过数组方式获取数据(不建议)。与此同时,在内部有几个方法可以回显特定数据。 ## 实现原理 构造函数中并没有读取数据库,而是在访问get/gets方法时再读取数据库,避免获取不必要的数据。get方法会先判断缓存是否存在,若不存在则读取数据库;gets方法直接读取数据库。set方法是将数据先写入缓存中,等到程序结束后再执行save方法保存。 通过__get魔术方法,可以返回uid=0的选项;通过__call魔术方法,可以回显(echo)uid=0的选项。实现了ArrayAccess,可以通过offsetExists判断有没有某一组uid的缓存数据;通过offsetGet获取某一组uid的缓存数据。通常情况下,不通过数组来获取数据,因为它们可能并不存在缓存,一般而言,它们是用来判断上次读取的数据是否存在的,算是一种特殊用途,但是也做了支持。不支持通过魔术方法或ArrayAccess来修改数据。 ## 使用方法 参考 [options说明](1561325)