Zend Framework教程之Zend_Registry对象用法分析
本文实例讲述了Zend Framework教程之Zend_Registry对象用法。分享给大家供大家参考,具体如下: 使用对象注册表(Registry) 对象注册表(或称对象仓库)是一个用于在整个应用空间(application space)内存储对象和值的容器。通过把对象存储在其中,我们可
本文实例讲述了Zend Framework教程之Zend_Registry对象用法。分享给大家供大家参考,具体如下:
使用对象注册表(Registry)
对象注册表(或称对象仓库)是一个用于在整个应用空间(application space)内存储对象和值的容器。通过把对象存储在其中,我们可以在整个项目的任何地方使用同一个对象。这种机制相当于一种全局存储。
我们可以通过Zend_Registry类的静态方法来使用对象注册表,另外,由于该类是一个数组对象,你可以使用数组形式来访问其中的类方法。
1. 设置Registry中的值
要保存一项内容到注册表中,我们可以使用静态方法 set()。
例 1. set() 使用示例:
Zend_Registry::set('index', $value);
$value可以是一个对象、数组或者标量。你可以再次使用set()来为注册表中已有的值设置一个新值。
index参数可以是一个标量,即字符串或整数,就像使用数组一样,类似于数组的索引/键名。
2. 获取Registry中的值
可以使用 get()方法来获取Registry中某项内容的值。
例 2. get() 方法示例:
$value = Zend_Registry::get('index');
getInstance()返回静态registry对象。
registry对象是可迭代的(iterable)。
例 3. 迭代一个registry对象:
$registry = Zend_Registry::getInstance(); foreach ($registry as $index => $value) { echo "Registry index $index contains:/n"; var_dump($value); }
3. 创建一个Registry对象
除了可以使用静态方法来访问Registry对象之外,你可以直接实例化它,就像使用普通的对象一样。
如果通过静态方法来访问registry对象的实例,它很方便进行静态存储,你可以在程序中的任何地方访问它。
如果使用传统的new 方法来创建registry的实例,则你可以使用数组一样的方式来初始化registry中的内容。
例 4. 创建一个registry对象
$registry = new Zend_Registry(array('index' => $value));
在创建这个对象实例之后,你可以使用数组对象方法来使用它,或者你可以把这个对象实例通过静态方法setInstance()设置为静态对象实例。
例 5. Example of initializing the static registry
$registry = new Zend_Registry(array('index' => $value)); Zend_Registry::setInstance($registry);
如果静态的注册表对象已经被初始化过,则setInstance()方法会抛出一个Zend_Exception异常。
4. 像访问数组一样访问Registry对象
如果你要一次访问或设置多个值,你会发现使用数组方式是很方便的。
例 6. array 方式访问示例:
$registry = Zend_Registry::getInstance(); $registry['index'] = $value; var_dump( $registry['index'] );
5. 对象方式访问Registry
你会发现使用面向对象风格来访问registry对象也是方便的,对象中的属性名称作为索引。 要这样做,你需要使用ArrayObject::ARRAY_AS_PROPS选项来创建registry对象,并初始化静态实例。你要在静态的registry被第一次访问之前就完成这个工作。小心使用这个选项,因为某些版本的PHP在使用这个选项时会有bug。
例 7. 对象形式的访问:
//在你的bootstrap代码中: $registry = new Zend_Registry(array(), ArrayObject::ARRAY_AS_PROPS) Zend_Registry::setInstance($registry); $registry->tree = 'apple'; . . . //在程序的任何其它地方: $registry = Zend_Registry::getInstance(); echo $registry->tree; // echo's "apple" $registry->index = $value; var_dump($registry->index);
6. 查询一个索引是否存在
可以使用静态方法isRegistered()来查询是否某个特定的索引已经设置了相应的值。
例 8. isRegistered() 示例:
if (Zend_Registry::isRegistered($index)) { $value = Zend_Registry::get($index); }
要确定一个数组对象中的某个特定索引的值是否设定,可以使用isset()函数,就像在普通的数组中那样使用。
例 9. isset() 示例:
$registry = Zend_Registry::getInstance(); // using array-access syntax if (isset($registry['index'])) { var_dump( $registry['index'] ); } // using object-access syntax, if enabled if (isset($registry->index)) { var_dump( $registry->index ); }
7. 扩展Registry对象
静态registry对象是类Zend_Registry的一个实例。如果你想给它增加功能,你可以继承Zend_Registry类,然后指定使用这个类来访问对象注册表。你可以使用静态方法setClassName()来指定使用这个类。注意这个类一定要是Zend_Registry的子类。
例 10. 指定静态注册表的类名:
Zend_Registry::setClassName('My_Registry'); Zend_Registry::set('index', $value);
如果你在registry已经被访问过后尝试设定该类名,则registry抛出一个异常。建议你在boostrap代码(即index.php)中设置该类名。
8. 删除静态注册表
尽管这不是必需的,你可以使用_unsetInstance()方法来删除registry的静态实例。
[注意] 数据丢失的风险
在使用_unsetInstance()的时候,静态注册表中的所有数据都会丢失并且无法恢复。
有时你可能需要_unsetInstance()这个方法。例如你想在已经初始化过registry对象之后,再使用setInstance()或 setClassName(),那么你可以使用_unsetInstance()先把静态实例删除了,然后才能使用那些方法。
例 11. _unsetInstance() 示例:
Zend_Registry::set('index', $value); Zend_Registry::_unsetInstance(); // 改变我们要使用的类 Zend_Registry::setClassName('My_Registry'); Zend_Registry::set('index', $value);
更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

得物APP是当前十分火爆品牌购物的软件,但是多数的用户不知道得物APP中功能如何的使用,下方会整理最详细的使用教程攻略,接下来就是小编为用户带来的得物多功能使用教程汇总,感兴趣的用户快来一起看看吧!得物使用教程【2024-03-20】得物分期购怎么使用【2024-03-20】得物优惠券怎么获得【2024-03-20】得物人工客服怎么找【2024-03-20】得物取件码怎么查看【2024-03-20】得物求购在哪里看【2024-03-20】得物vip怎么开【2024-03-20】得物怎么申请退换货

PhotoshopCS是PhotoshopCreativeSuite的缩写,由Adobe公司出品的软件,被广泛用于平面设计和图像处理,作为新手学习PS,今天就让小编为您解答一下photoshopcs5是什么软件以及photoshopcs5使用教程。一、photoshopcs5是什么软件AdobePhotoshopCS5Extended是电影、视频和多媒体领域的专业人士,使用3D和动画的图形和Web设计人员,以及工程和科学领域的专业人士的理想选择。呈现3D图像并将它合并到2D复合图像中。轻松编辑视

在购买显示器的时候对其进行测试是必不可少的一环,能够避免买到有损坏的,今天小编教大家来使用软件对显示器进行测试。方法步骤1.首先要在本站搜索下载DisplayX这款软件,安装打开,会看到提供给用户很多种检测方法。2.用户点击常规完全测试,首先是测试显示器的亮度,用户调节显示器使得方框都能看得清。3.之后点击鼠标即可进入下一环节,如果显示器能够分清每个黑色白色区域那说明显示器还是不错的。4.再次单击鼠标左键,会看到显示器的灰度测试,颜色过渡越平滑表示显示器越好。5.另外在displayx软件中我们

夏天雨后,经常能见到一种美丽且神奇的特殊天气景象——彩虹。这也是摄影中可遇而不可求的难得景象,非常出片。彩虹出现有这样几个条件:一是空气中有充足的水滴,二是太阳以较低的角度进行照射。所以下午雨过天晴后的一段时间内,是最容易看到彩虹的时候。不过彩虹的形成受天气、光线等条件的影响较大,因此一般只会持续一小段时间,而最佳观赏、拍摄时间更为短暂。那么遇到彩虹,怎样才能合理将其记录下来并拍出质感呢?1.寻找彩虹除了上面提到的条件外,彩虹通常出现在阳光照射的方向,即如果太阳由西向东照射,彩虹更有可能出现在东

随着智能手机的不断发展,手机的功能也变得越来越强大,其中截长图功能成为了许多用户日常使用的重要功能之一。截长图可以帮助用户将一个较长的网页、对话记录或者图片一次性保存下来,方便查阅和分享。而在众多手机品牌中,华为手机也是备受用户推崇的一款品牌之一,其截长图功能也备受好评。本文将为大家介绍华为手机截长图的正确方法,以及一些专家技巧,帮助大家更好地利用华为手机的

PHP教程:如何将int类型转换为字符串在PHP中,将整型数据转换为字符串是一种常见的操作。本教程将介绍如何使用PHP内置的函数将int类型转换为字符串,同时提供具体的代码示例。使用强制类型转换:在PHP中,可以使用强制类型转换的方式将整型数据转换为字符串。这种方法非常简单,只需要在整型数据前加上(string)即可将其转换为字符串。下面是一个简单的示例代码

将MySQL查询结果数组转换为对象的方法如下:创建一个空对象数组。循环结果数组并为每一行创建一个新的对象。使用foreach循环将每一行的键值对赋给新对象的相应属性。将新对象添加到对象数组中。关闭数据库连接。
