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 中的批处理的实现
Jun 14 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
Aug 26 PHP
PHP字符串处理的10个简单方法
Jun 30 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
浅析PHP绘图技术
Jul 03 PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 PHP
PHP+APACHE实现网址伪静态
Feb 22 PHP
详解PHP匿名函数与注意事项
Mar 29 PHP
将PHP的session数据存储到数据库中的代码实例
Jun 24 PHP
PHP实现对二维数组某个键排序的方法
Sep 14 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
PHP单例模式模拟Java Bean实现方法示例
Dec 07 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开发文件系统实例讲解
2006/10/09 PHP
第十五节--Zend引擎的发展
2006/11/16 PHP
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
2018/08/17 PHP
php实现每日签到功能
2018/11/29 PHP
WordPress 插件——CoolCode使用方法与下载
2007/07/02 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
js获取某元素的class里面的css属性值代码
2014/01/16 Javascript
jQuery三级下拉列表导航菜单代码分享
2020/04/15 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
详解JS: reduce方法实现 webpack多文件入口
2017/02/14 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
python查询mysql中文乱码问题
2014/11/09 Python
Python实现获取某天是某个月中的第几周
2015/02/11 Python
浅谈Python中copy()方法的使用
2015/05/21 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
Python 常用string函数详解
2016/05/30 Python
Python实现的选择排序算法示例
2017/11/29 Python
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
利用setuptools打包python程序的方法步骤
2020/01/18 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
服务员自我评价
2014/01/25 职场文书
21岁生日感言
2014/02/27 职场文书
六个一活动实施方案
2014/03/21 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis