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 相关文章推荐
ThinkPHP框架设计及扩展详解
Nov 25 PHP
PHP实现递归复制整个文件夹的类实例
Aug 03 PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 PHP
10个对初学者非常有用的PHP技巧
Apr 06 PHP
PHP经典算法集锦【经典收藏】
Sep 14 PHP
PHP yii实现model添加默认值的方法(两种方法)
Nov 10 PHP
php中__toString()方法用法示例
Dec 07 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
Dec 10 PHP
PHP实现新型冠状病毒疫情实时图的实例
Feb 04 PHP
如何在PHP中使用AES加密算法加密数据
Jun 24 PHP
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
Apr 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中操作memcached缓存进行增删改查数据的实现代码
2014/08/15 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
php 常用的系统函数
2017/02/07 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
JAVASCRIPT下判断IE与FF的比较简单的方式
2008/10/17 Javascript
JS 控件事件小结
2012/10/31 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
angularjs 获取默认选中的单选按钮的value方法
2018/02/28 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
JavaScript函数定义方法实例详解
2019/03/05 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
[47:42]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
python内存监控工具memory_profiler和guppy的用法详解
2019/07/29 Python
Python列表元素常见操作简单示例
2019/10/25 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
大学生村官典型材料
2014/01/12 职场文书
商业活动邀请函
2014/02/04 职场文书
元旦活动感言
2014/03/08 职场文书
班级寄语大全
2014/04/10 职场文书
电工实训报告总结
2014/11/05 职场文书
拯救大兵瑞恩观后感
2015/06/09 职场文书
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python