Zend的Registry机制的使用说明
框架(架构)  /  管理员 发布于 7年前   164
项目过程中有很多全局变量, 需要全局存储,是否是使用全局变量来进行存储?那就弱爆了。Zend使用Registry机制(注册表)存储对象和值,是一个存储对象和值的容器。 Zend_Registry这个类就是做这个目的 代码示例 代码分析 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函数 } offset方法很好理解,但是为什么要使用getInstance方法呢? 这里建议大家好好看看,这个是结合类静态方法的单例模式。 我们一般的单例模式写成: protected function __construct(){ public function setVal(){ $a = A::getInstance(); $a->setVal(); 这边的register就做到了直接使用静态方法调用 A::setVal(); 大致的代码思路我写了个demo public function __construct(){ } public static function setV(){ public function setVal(){ A::setV();
Zend_Registry::set('config', $config);
Zend_Registry::get('config');
这两个函数是最常用的两个函数。我们来看一下这个类
public static function set($index, $value)
{
$instance = self::getInstance();
$instance->offsetSet($index, $value);
一个是实例化Register,另一个是调用offsetSet方法,将index和value设置进去。
class A{
private $_instance;
public static function getInstance(){
...
}
...
}
...
}
}
这样在调用之前就需要实例化一个类,虽然这个实例化实际上是单例,但感觉还是不舒服
class A{
private static $_instance;
public static function getInstance(){
if(self::_instance !==null){
return $this->_instance;
} else {
return new A();
}
}
$a = self::getInstance();
$a->setVal();
}
...
}
}
实际上就是直接把__construct()放开成为public,然后实例化它您可能感兴趣的文章:
上一条:
基于Zend的Config机制的应用分析
下一条:
Zend的MVC机制使用分析(二)
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号