在项目的过程中,存在许多需要全局存储的全局变量。是使用全局变量来存储它吗这是一个弱的打击。Zend使用注册表机制(注册表)来存储对象和价值观,是一种用于存储对象和值的容器。

zend_registry这个类是这样做的

代码示例
zend_registry::集('config,$配置);
zend_registry::把('config);

代码分析
这两个函数是两个最常用的函数。

类zend_registry扩展数组对象

这类继承数组对象

数组对象实现了iteratoraggregate,遍历ArrayAccess,序列化,可数

数组对象是一个对象集,这相当于一组通用的其他语言的概念。

关键是要了解下面的空数组对象::(美元指数offsetset混合,混合newval美元),这是关键在哈希表,价值,只是关键,它可以是任何类型。

好了,回到zend_registry看看设置了

集函数
复制代码代码如下所示:
公共静态函数集($索引,$)
{
例如:美元自:getInstance()=;
实例-> offsetset美元(美元指数,美元的价值);

}


一是以登记,而另一个是调用offsetset方法建立索引和值。

偏移方法很好理解,但为什么使用getInstance方法

建议您仔细看看这一点,这是一个结合了类静态方法的单一模式。

我们的一般单例模式写为:
复制代码代码如下所示:
类{
私人_instance美元;
公共静态函数getInstance(){
…
}

保护功能__construct(){
…
}

公共功能setval(){
…
}
}

$ =一:getInstance();

美元-> setval();

所以你需要在调用之前实例化一个类,虽然这个实例化实际上是一个单一的例子,但是它感觉不舒服。

这里的寄存器是直接使用静态方法调用完成的。

答::setval();

我用一般代码写了一个演示。
复制代码代码如下所示:
一个{类
私有静态_instance美元;
公共静态函数getInstance(){
如果(自::_instance!= NULL){
返回_instance美元->;
{人}
返回新的A();
}
}

公共功能__construct(){

}

公共静态函数SETV(){
美元=自我:getInstance();
美元-> setval();
}

公共功能setval(){
…
}
}

答::东南卫视();

事实上,让__construct()被释放到公众直接,然后实例化