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连接Oracle for NT 远程数据库
Oct 09 PHP
PHP里的中文变量说明
Jul 23 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
Jun 05 PHP
php求正负数数组中连续元素最大值示例
Apr 11 PHP
destoon实现调用图文新闻的方法
Aug 21 PHP
PHP删除指定目录中的所有目录及文件的方法
Feb 26 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
Jun 03 PHP
10个对初学者非常有用的PHP技巧
Apr 06 PHP
PHP中FTP相关函数小结
Jul 15 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
Laravel 实现关系模型取出需要的字段
Oct 10 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 正则表达式常用函数
2014/08/17 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
为你总结一些php系统类函数
2015/10/21 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
jquery 分页控件实现代码
2009/11/30 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
2014/01/24 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
基于jQuery实现的设置文本区域的光标位置
2018/06/15 jQuery
js中getter和setter用法实例分析
2018/08/14 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
JS实现拼图游戏
2021/01/29 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
pygame实现弹力球及其变速效果
2017/07/03 Python
Python 实现王者荣耀中的敏感词过滤示例
2019/01/21 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
英国探险旅游专家:Explore
2018/12/20 全球购物
科技之星事迹材料
2014/06/02 职场文书
真诚的求职信
2014/07/04 职场文书
经典演讲稿开场白
2014/08/25 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
承诺书范本大全
2015/05/04 职场文书
2015年校务公开工作总结
2015/05/26 职场文书
独生子女证明范本
2015/06/19 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL