Yaf_Registry使用

一、定义

  在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;
    }

猜你喜欢

转载自www.cnblogs.com/ttaylor/p/12984395.html