PHP设计模式 注册表模式(多个类的注册)


Posted in PHP onFebruary 05, 2012

以前我也写过一个注册表类,不过那一个不能进行多个类的注册,下面用数组对类进行了存储。

<?php 
//基础类 
class webSite {//一个非常简单的基础类 
private $siteName; 
private $siteUrl; 
function __construct($siteName,$siteUrl){ 
$this->siteName=$siteName; 
$this->siteUrl=$siteUrl; 
} 
function getName(){ 
return $this->siteName; 
} 
function getUrl(){ 
return $this->siteUrl; 
} 
} 
class registry {//注册表类 单例模式 
private static $instance; 
private $values=array();//用数组存放类名称 
private function __construct(){}//这个用法决定了这个类不能直接实例化 
static function instance(){ 
if (!isset(self::$instance)){self::$instance=new self();} 
return self::$instance; 
} 
function get($key){//获取已经注册了的类 
if (isset($this->values[$key])){ 
return $this->values[$key]; 
} 
return null; 
} 
function set($key,$value){//注册类方法 
$this->values[$key]=$value; 
} 
} 
$reg=registry::instance(); 
$reg->set("website",new webSite("WEB开发笔记","www.chhua.com"));//对类进行注册 
$website=$reg->get("website");//获取类 
echo $website->getName();//输出WEB开发笔记 
echo $website->getUrl();//输出www.chhua.com 
?>

注册表的作用是提供系统级别的对象访问功能。有的同学会说,这样是多此一举,不过小项目中的确没有必要对类进行注册,如果是大项目,还是非常有用的。
PHP 相关文章推荐
php的正则处理函数总结分析
Jun 20 PHP
IIS下PHP的三种配置方式对比
Nov 20 PHP
PHP获取youku视频真实flv文件地址的方法
Dec 23 PHP
微信自定义菜单的处理开发示例
Apr 16 PHP
PHP在线书签系统分享
Jan 04 PHP
joomla组件开发入门教程
May 04 PHP
Yii2简单实现给表单添加验证码的方法
Jul 18 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
Nov 14 PHP
php实现文件预览功能
May 23 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
Mar 03 PHP
需要注意的几个PHP漏洞小结
Feb 05 #PHP
PHP的可变变量名的使用方法分享
Feb 05 #PHP
PHP中如何判断AJAX提交的数据
Feb 05 #PHP
用PHP书写安全的脚本代码
Feb 05 #PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
Feb 05 #PHP
PHP中使用数组实现堆栈数据结构的代码
Feb 05 #PHP
PHP使用数组实现队列
Feb 05 #PHP
You might like
ThinkPHP缓存方法S()概述
2014/06/13 PHP
[原创]php使用curl判断网页404(不存在)的方法
2016/06/23 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2020/04/06 PHP
wordpress之js库集合研究介绍
2007/08/17 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
优秀广告词大全
2014/03/19 职场文书
《画》教学反思
2014/04/14 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
家属答谢词
2015/01/05 职场文书
投诉信回复范文
2015/07/03 职场文书
工伤调解协议书
2016/03/21 职场文书
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python
javascript数组includes、reduce的基本使用
2021/07/02 Javascript
深入理解Pytorch微调torchvision模型
2021/11/11 Python