Zend的Registry机制的使用说明
|
项目过程中有很多全局变量, 需要全局存储,是否是使用全局变量来进行存储?那就弱爆了。Zend使用Registry机制(注册表)存储对象和值,是一个存储对象和值的容器。 Zend_Registry这个类就是做这个目的 代码示例Zend_Registry::set('config',$config); Zend_Registry::get('config'); 代码分析这两个函数是最常用的两个函数。我们来看一下这个类
class Zend_Registry extends ArrayObject 这个类继承自ArrayObjectArrayObject implements IteratorAggregate,Traversable,ArrayAccess,Serializable,Countable ArrayObject是一个对象集合,相当于其他语言的泛型集合的概念。 重点了解下void ArrayObject::offsetSet ( mixed $index,mixed $newval ),这个函数就是hashtable中的设置key,value,只是key,value可以是任何类型的。 好了,回到Zend_Registry,看看set做了些什么事情 set函数 代码如下:public static function set($index,$value) { $instance = self::getInstance(); $instance->offsetSet($index,$value); }
offset方法很好理解,但是为什么要使用getInstance方法呢? 这里建议大家好好看看,这个是结合类静态方法的单例模式。 我们一般的单例模式写成: 代码如下:class A{ private $_instance; public static function getInstance(){ ... } protected function __construct(){ ... } public function setVal(){ ... } } $a = A::getInstance(); $a->setVal(); 这样在调用之前就需要实例化一个类,虽然这个实例化实际上是单例,但感觉还是不舒服 这边的register就做到了直接使用静态方法调用 A::setVal(); 大致的代码思路我写了个demo (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
