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 相关文章推荐
Uchome1.2 1.5 代码学习 common.php
Apr 24 PHP
IIS6.0中配置php服务全过程解析
Aug 07 PHP
PHP5各个版本的新功能和新特性总结
Mar 16 PHP
phpmailer中文乱码问题的解决方法
Apr 22 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
Jun 26 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 PHP
PHP实现利用MySQL保存session的方法
Aug 23 PHP
PHP中余数、取余的妙用
Jun 29 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
完美解决thinkphp唯一索引重复时出错的问题
Mar 31 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
Apr 01 PHP
PHP7原生MySQL数据库操作实现代码
Jul 03 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
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
jquery实现下拉框左右选择功能
2017/02/21 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
es6数值的扩展方法
2019/03/11 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
[00:10]DOTA2 TI9勇士令状明日上线
2019/05/07 DOTA
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
师范应届生语文教师求职信
2013/10/29 职场文书
军训 自我鉴定
2014/02/03 职场文书
读书月活动方案
2014/05/22 职场文书
美化环境标语
2014/06/20 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
人事行政主管岗位职责
2015/04/09 职场文书
MySQL的Query Cache图文详解
2021/07/01 MySQL
vue使用watch监听属性变化
2022/04/30 Vue.js