Zend的Registry机制的使用说明
2015-01-24信息快讯网
本篇文章介绍了,Zend的Registry机制的使用说明。需要的朋友参考下
项目过程中有很多全局变量, 需要全局存储,是否是使用全局变量来进行存储?那就弱爆了。Zend使用Registry机制(注册表)存储对象和值,是一个存储对象和值的容器。
Zend_Registry这个类就是做这个目的
代码示例
Zend_Registry::set('config', $config);
Zend_Registry::get('config');
代码分析
这两个函数是最常用的两个函数。我们来看一下这个类
class Zend_Registry extends ArrayObject
这个类继承自ArrayObject
ArrayObject 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); }
一个是实例化Register,另一个是调用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
class A{ private static $_instance; public static function getInstance(){ if(self::_instance !==null){ return $this->_instance; } else { return new A(); } } public function __construct(){ } public static function setV(){ $a = self::getInstance(); $a->setVal(); } public function setVal(){ ... } } A::setV();
实际上就是直接把__construct()放开成为public,然后实例化它
php mysql_real_escape_string函数用法与实例教程
php中利用str_pad函数生成数字递增形式的产品编号
Zend studio文件注释模板设置方法
php stream_get_meta_data返回值
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
PHP利用REFERER根居访问来地址进行页面跳转
PHP strstr 函数判断字符串是否否存在的实例代码
分享下PHP register_globals 值为on与off的理解
从PHP $_SERVER相关参数判断是否支持Rewrite模块
怎么在Windows系统中搭建php环境
PHP取整函数:ceil,floor,round,intval的区别详细解析
php取整函数ceil,floo,round的用法及介绍
Zend Studio 实用快捷键一览表(精心整理)
基于Zend的Config机制的应用分析
Zend的MVC机制使用分析(二)
Zend的MVC机制使用分析(一)
基于Zend的Captcha机制的应用
php中使用$_REQUEST需要注意的一个问题
PHP闭包(Closure)使用详解
php笔记之:php函数range() round()和list()的使用说明
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
php class中self,parent,this的区别以及实例介绍
『PHP』PHP截断函数mb_substr()使用介绍
PHP 读取Postgresql中的数组
str_replace只替换一次字符串的方法
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
PHP 自定义错误处理函数trigger_error()
php中flush()、ob_flush()、ob_end_flush()的区别介绍