一、定义
在yaf的手册中有关Register类是这样定义的:
Yaf_Registry, 对象注册表(或称对象仓库)是一个用于在整个应用空间(application space)内存储对象和值的容器. 通过把对象存储在其中,我们可以在整个项目的任何地方使用同一个对象.这种机制相当于一种全局存储. 我们可以通过Yaf_Registry类的静态方法来使用对象注册表. 另外,由于该类是一个数组对象,你可以使用数组形式来访问其中的类方法。
其中Register类中包含的方法有:
Yaf_Registry { /* 属性 */ static $_instance ; protected $_entries ; /* 方法 */ __construct ( void ) public static del ( string $name ) : void public static get ( string $name ) : mixed public static has ( string $name ) : bool public static set ( string $name , string $value ) : bool }
在yaf的官方手册定义中,"整个应用空间"的概念是比较难理解的,我现目前就理解为是一次完成的php请求,在一次php请求中,可以使用Registry类来存储全局变量,,其中也提供了增、删差的方法。
二、应用场景
1、缓存用户登录信息
可以使用Registry缓存用户登录信息,其中包括功能权限、数据权限等信息
2、缓存重复使用的全局信息(例如需要频繁调用外部接口获取数据的情况),如果已缓存信息,则使用缓存信息,如果未缓存信息,则重新获取,可以有效的提高效率,降低接口开销。
public static function getConfigInfo($arrPayLoad) { $data = \Yaf\Registry::get(json_encode($arrPayLoad)); if (empty($data)) { $data = (new ExternalApi())->getAllConfList($arrPayLoad); \Yaf\Registry::set(json_encode($arrPayLoad), $data); } return $data; }