Zend Framework入门教程之Zend_Registry组件用法详解


Posted in PHP onDecember 09, 2016

本文实例讲述了Zend Framework中Zend_Registry组件用法。分享给大家供大家参考,具体如下:

1.对象注册表

入门案例:

<?php
require_once("Zend/Loader.php");
Zend_Loader::loadClass('Zend_Registry');
$member = array(
  "姓名"=>"张三",
  "性别"=>"女",
  "年龄"=>"13",
  "职业"=>"学生",
  "爱好"=>"玩游戏",
  "血型"=>"AB"
  );
$registry = new Zend_Registry($member);
echo "姓名为:";
echo $registry["姓名"];
echo "<p>";
echo "性别为:";
echo $registry["性别"];
echo "<p>";
echo "年龄为:";
echo $registry["年龄"];
echo "<p>";
echo "职业为:";
echo $registry["职业"];
echo "<p>";
echo "爱好为:";
echo $registry["爱好"];
echo "<p>";

结果为:

姓名为:张三
性别为:女
年龄为:13
职业为:学生
爱好为:玩游戏

2.set()方法和get()方法设置数据、获取数据

语法:

设置值Zend_Registry::set('index','value')
获取值Zend_Registry::get('index')

案例:

<?php
require_once("Zend/Loader.php");
Zend_Loader::loadClass('Zend_Registry');
$member = array(
  "姓名"=>"张三",
  "性别"=>"女",
  "年龄"=>"13",
  "职业"=>"学生",
  "爱好"=>"玩游戏",
  "血型"=>"AB"
  );
Zend_Registry::set("registry",$member);
$registry = Zend_Registry::get("registry");
echo "姓名为:";
echo $registry["姓名"];
echo "<p>";
echo "性别为:";
echo $registry["性别"];
echo "<p>";
echo "年龄为:";
echo $registry["年龄"];
echo "<p>";
echo "职业为:";
echo $registry["职业"];
echo "<p>";
echo "爱好为:";
echo $registry["爱好"];
echo "<p>";

说明:效果等同于new的结果。

3.对象注册表setInstance、getInstance

例子:

<?php
require_once("Zend/Loader.php");
Zend_Loader::loadClass('Zend_Registry');
$registry = new Zend_Registry();
Zend_Registry::setInstance($registry);
$registry->name = "Mike";
$registry->age = "30";
$registry = Zend_Registry::getInstance();
echo $registry->name;
echo "<p>";
echo $registry->age;
echo "<p>";
$registry->sex = "male";
echo $registry->sex;

结果:

Mike
30
male

说明:通过setInstance方法,就可以用对象的方式设置其中的值了,然后通过getInstance来获取值。

4.isRegistered()来实现索引是否有值的判断。

案例:

<?php
require_once("Zend/Loader.php");
Zend_Loader::loadClass('Zend_Registry');
Zend_Registry::set("name","张三");
if(Zend_Registry::isRegistered("name")){
  echo "对象注册表name已经定义";
}else{
  echo "对象注册表name没有定义";
}
echo "<p>";
if(Zend_Registry::isRegistered("age")){
  echo "对象注册表age已经定义";
}else{
  echo "对象注册表age没有定义";
}

结果:

对象注册表name已经定义
对象注册表age没有定义

说明:

如果定义了,可以检测出来。

5.删除静态注册表

Zend_Registry::_unsetInstance()方法删除静态注册表

案例:

<?php
require_once("Zend/Loader.php");
Zend_Loader::loadClass('Zend_Registry');
Zend_Registry::set("name","张三");
echo "执行操作前:";
echo "<p>";
if(Zend_Registry::isRegistered("name")){
  echo "对象注册表name已经定义";
}else{
  echo "对象注册表name没有定义";
}
echo "<p>";
if(Zend_Registry::isRegistered("age")){
  echo "对象注册表age已经定义";
}else{
  echo "对象注册表age没有定义";
}
Zend_Registry::_unsetInstance("name");
echo "<p>";
echo "执行操作后:";
echo "<p>";
if(Zend_Registry::isRegistered("name")){
  echo "对象注册表name已经定义";
}else{
  echo "对象注册表name没有定义";
}
echo "<p>";
if(Zend_Registry::isRegistered("age")){
  echo "对象注册表age已经定义";
}else{
  echo "对象注册表age没有定义";
}

结果:

执行操作前:
对象注册表name已经定义
对象注册表age没有定义
执行操作后:
对象注册表name没有定义
对象注册表age没有定义

说明:执行完删除方法之后,之前的注册信息就没有了。

小结:

这就是Zend_Registry的几个常用的方法与案例。通过注册表可以实现很多普通变量无法实现的功能。

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

PHP 相关文章推荐
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
Mar 15 PHP
Discuz Uchome ajaxpost小技巧
Jan 04 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
解析PHP工厂模式的好处
Jun 18 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
PHP实现简单数字分页效果
Jul 26 PHP
深入理解PHP内核(二)之SAPI探究
Nov 10 PHP
php+ajax登录跳转登录实现思路
Jul 31 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
PHP fclose函数用法总结
Feb 15 PHP
如何在centos8自定义目录安装php7.3
Nov 28 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 PHP
Zend Framework入门教程之Zend_Config组件用法详解
Dec 09 #PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 #PHP
Zend Framework实现自定义过滤器的方法
Dec 09 #PHP
Zend Framework校验器Zend_Validate用法详解
Dec 09 #PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 #PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
Dec 09 #PHP
浅谈PHP的数据库接口和技术
Dec 09 #PHP
You might like
短波问题解答
2021/02/28 无线电
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
解析PHP中如何将数组变量写入文件
2013/06/06 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
PHP工程师VIM配置分享
2015/12/15 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
网站上面有这种切换效果
2006/06/26 Javascript
javascript prototype,executing,context,closure
2008/12/24 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
JavaScript实现单图片上传并预览功能
2019/09/30 Javascript
three.js中多线程的使用及性能测试详解
2021/01/07 Javascript
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
Python中有几个关键字
2020/06/04 Python
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
餐饮营销方案
2014/02/23 职场文书
我爱读书演讲稿
2014/05/07 职场文书
护士自荐信范文
2015/03/25 职场文书
小学大队委竞选口号
2015/12/25 职场文书
六年级情感作文之500字
2019/10/23 职场文书