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 之 没有mysql支持时的替代方案
Oct 09 PHP
PHP文件上传实例详解!!!
Jan 02 PHP
dedecms采集中可以过滤多行代码的正则表达式
Mar 17 PHP
实用函数5
Nov 08 PHP
关于PHP session 存储方式的详细介绍
Jun 25 PHP
8个必备的PHP功能实例代码
Oct 27 PHP
php异常处理使用示例
Feb 25 PHP
php根据某字段对多维数组进行排序的方法
Mar 07 PHP
Linux操作系统安装LAMP环境
Jun 26 PHP
十大使用PHP框架的理由
Sep 26 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
Jan 17 PHP
深入讲解PHP的对象注入(Object Injection)
Mar 01 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
几个有用的php字符串过滤,转换函数代码
2012/05/01 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
关于js里的this关键字的理解
2015/08/17 Javascript
js实现文字截断功能
2016/09/14 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
Bootstrap栅格系统简单实现代码
2017/03/06 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
使用vue如何构建一个自动建站项目
2018/02/05 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
python timestamp和datetime之间转换详解
2017/12/11 Python
Python实现采用进度条实时显示处理进度的方法
2017/12/19 Python
对python append 与浅拷贝的实例讲解
2018/05/04 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
车队司机个人自我鉴定
2014/04/17 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
领导干部作风建设总结
2014/10/23 职场文书
长城导游词300字
2015/01/30 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
金砖之国观后感
2015/06/11 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis