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实现建立多层级目录的方法
Jul 19 PHP
php自定义apk安装包实例
Oct 20 PHP
php生成RSS订阅的方法
Feb 13 PHP
codeigniter中实现一次性加载多个view的方法
Mar 20 PHP
php获取图片信息的方法详解
Dec 10 PHP
thinkPHP基于ajax实现的菜单与分页示例
Jul 12 PHP
php中static 静态变量和普通变量的区别
Dec 01 PHP
详解PHP中的序列化、反序列化操作
Mar 21 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
May 26 PHP
Laravel中如何轻松容易的输出完整的SQL语句
Jul 26 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
上海牌131型七灯四波段四喇叭一级收音机
2021/03/02 无线电
PHP应用JSON技巧讲解
2013/02/03 PHP
php中3种方法删除字符串中间的空格
2014/03/10 PHP
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
PHP入门教程之PHP操作MySQL的方法分析
2016/09/11 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
图片文字识别(OCR)插件Ocrad.js教程
2018/11/26 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
python实现神经网络感知器算法
2017/12/20 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
2019/01/10 Python
Python创建或生成列表的操作方法
2019/06/19 Python
python中删除某个元素的方法解析
2019/11/05 Python
python爬虫可以爬什么
2020/06/16 Python
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
2019年Java 最常见的 面试题
2016/10/19 面试题
结构工程研究生求职信
2013/10/13 职场文书
个人自我鉴定
2013/11/07 职场文书
研究生求职推荐信范文
2013/11/30 职场文书
义和团口号
2014/06/17 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
艺术学院毕业生自荐信
2014/07/05 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
2014年物流工作总结
2014/11/25 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
Hive常用日期格式转换语法
2022/06/25 数据库