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+javascript模拟Matrix画面
Oct 09 PHP
PHP连接SQLServer2005 的问题解决方法
Jul 19 PHP
php开发文档 会员收费1期
Aug 14 PHP
php实现文件下载代码分享
Aug 19 PHP
PHP实现Soap通讯的方法
Nov 03 PHP
php使用curl出现Expect:100-continue解决方法
Mar 03 PHP
thinkphp命名空间用法实例详解
Dec 30 PHP
WordPress中获取指定分类及其子分类下的文章数目
Dec 31 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
Aug 12 PHP
php输出含有“#”字符串的方法
Jan 18 PHP
thinkPHP多表查询及分页功能实现方法示例
Jul 03 PHP
Laravel 加载第三方类库的方法
Apr 20 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 项目的方法
2007/01/02 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
在vue里面设置全局变量或数据的方法
2018/03/09 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
2018/04/18 jQuery
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
在vue中根据光标的显示与消失实现下拉列表
2019/09/29 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
Python Queue模块详解
2014/11/30 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
2018/04/19 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
Python循环实现n的全排列功能
2019/09/16 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
局域网标准
2016/09/10 面试题
人事专员岗位职责
2013/11/20 职场文书
高中的自我鉴定
2013/12/16 职场文书
如何写一份好的自荐信
2014/01/02 职场文书
保安的辞职报告怎么写
2014/01/20 职场文书
公司会计岗位职责
2014/02/13 职场文书
大学生先进事迹材料
2014/02/16 职场文书
2014年个人思想工作总结
2014/11/27 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
2021/05/29 MySQL