本文阐述了在Zend框架教程zend_registry对象使用。分享给您参考,如下:

使用对象注册表(注册表)

对象注册表(或对象仓库)是在整个应用程序空间中存储对象和值的容器。通过将对象存储在其中,我们可以在整个项目的任何地方使用同一个对象。

我们可以用zend_registry类的静态方法使用对象注册表。此外,因为这个类是一个数组对象,所以可以使用数组形式访问类方法。

1。在注册表中设置值

为了将项目保存到注册表,我们可以使用静态方法集()。

例1。使用实例设置():


zend_registry::集('index ',美元的价值);




$值可以是对象、数组或标量。您可以再次使用set()来为注册表中的值设置一个新值。

索引参数可以是标量或字符串或整数,如数组的使用,类似于数组索引键。

2。获取注册表中的值

get()方法可用于获取注册表中某个内容的值。

例2。获取()方法示例:


价值= zend_registry::把('index);




GetInstance()返回静态注册对象。

注册表对象的迭代(迭代)。

例3。迭代注册表对象:


美元= zend_registry::getInstance(注册表);
foreach(美元美元美元指数=注册表值){
注册表索引$;
var_dump(价值);
}




三.创建注册表对象

除了使用静态方法访问注册表对象外,还可以直接实例化它,就像使用普通对象一样。

如果使用静态方法访问注册表对象的实例,则对静态存储非常方便,您可以在程序的任何地方访问它。

如果使用传统的新方法创建注册表实例,则可以以同样的方式使用注册表初始化注册表中的内容。

例4。创建注册表对象


新的zend_registry($注册表=阵列('index=价值));




在创建该对象的实例,你可以使用数组对象的方法来使用它,或者你可以通过静态方法setinstance设置对象实例()一个静态对象实例。

例5。初始化静态注册表的示例


新的zend_registry($注册表=阵列('index=价值));
zend_registry::setinstance($注册表);




如果静态注册对象已初始化的setinstance()方法将抛出一个异常zend_exception。

4。访问注册表对象,比如访问数组

如果您希望一次访问或设置多个值,您会发现使用数组非常方便。

例6。数组模式访问示例:


美元= zend_registry::getInstance(注册表);
{ } =注册表'index美元价值;
var_dump($注册表'index{ });




5访问注册表。对象模式

你会发现它也方便使用对象导向式访问注册表对象和对象中的属性的名称作为一个指标。为此,你需要使用数组对象::array_as_props选项创建注册表对象,并初始化静态实例。你必须在静态的注册表是第一次去做这项工作。小心使用此选项,因为PHP版本会有一些bug,使用此选项时。

例7。对象窗体访问:


在引导代码中:
注册表=新zend_registry美元(array(),数组对象::array_as_props)
zend_registry::setinstance($注册表);
$注册->树= 'apple;
。
。
。
在程序的任何其他部分:
美元= zend_registry::getInstance(注册表);
注册表>树;
$注册表>索引= $值;
var_dump($注册表->索引);




6。查询索引的存在性

静态方法以()可以用来查询是否一个特定的指标设置相应的值。

例8。以()为例:


如果(zend_registry::以(美元指数)){
价值= zend_registry::把(美元指数);
}




确定是否在一个数组中的一个特定对象的索引值设置,您可以使用isset()函数,因为它是用在一个普通的数组。

例9。isset()的例子:


美元= zend_registry::getInstance(注册表);
数组访问语法
如果(isset($注册表{ 'index ' })){
var_dump($注册表'index{ });
}
对象访问语法,如果启用
如果(isset($注册表->索引)){
var_dump($注册表->索引);
}




7。扩展注册对象

静态注册对象是你想给它添加功能的类zend_registry.if实例,你可以继承zend_registry类,然后指定类的访问对象的使用注册表,你可以使用静态方法setclassname()指定的类的使用。注意,这个类必须是zend_registry子类。

例10。指定静态注册表的类名:


zend_registry::setclassname('my_registry);
zend_registry::集('index ',美元的价值);




如果你试图在注册表被访问集合类的名称,注册将抛出一个异常。建议您设置类的名字在自举代码(即指数。PHP)。

8。删除静态注册表

虽然这是没有必要的,你可以用_unsetinstance()删除注册表的一个静态实例方法。

{数据丢失的风险

当_unsetinstance()是用于在静态注册的所有数据将丢失,无法恢复。

有时你可能需要_unsetinstance()方法。例如,如果你想使用setinstance setclassname()或()初始化后的注册对象,您可以使用_unsetinstance()之前,你可以使用这些方法删除静态实例。

例11。_unsetinstance()的例子:


zend_registry::集('index ',美元的价值);
zend_registry::_unsetinstance();
我们想使用类/更改
zend_registry::setclassname('my_registry);
zend_registry::集('index ',美元的价值);




更多关于Zend相关内容感兴趣的读者可以查看这个话题:Zend框架教程站

希望本文将有助于基于Zend框架的PHP程序设计。