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中cookies使用指南
Mar 16 PHP
PHP中=赋值操作符对不同数据类型的不同行为
Jan 02 PHP
PHP5常用函数列表(分享)
Jun 07 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
thinkphp判断访客为手机端或PC端的方法
Nov 24 PHP
php中define用法实例
Jul 30 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
PHP根据session与cookie用户登录状态操作类的代码
May 13 PHP
php中namespace及use用法分析
Dec 06 PHP
php传值和传引用的区别点总结
Nov 19 PHP
Laravel配合jwt使用的方法实例
Oct 25 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
咖啡的传说和历史
2021/03/03 新手入门
小偷PHP+Html+缓存
2006/11/25 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
js 学习笔记(三)
2009/12/29 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
浅谈vue项目打包优化策略
2018/09/29 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
vant实现购物车功能
2020/06/29 Javascript
解决antd Form 表单校验方法无响应的问题
2020/10/27 Javascript
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
python中matplotlib实现最小二乘法拟合的过程详解
2017/07/11 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
Python timeit模块原理及使用方法
2020/10/10 Python
彪马法国官网:PUMA法国
2019/12/15 全球购物
食品安全工作实施方案
2014/03/26 职场文书
具结保证书
2015/01/17 职场文书
导游词之黄帝陵景区
2019/09/16 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python