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+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
Dec 16 PHP
10个可以简化php开发过程的MySQL工具
Apr 11 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
Apr 18 PHP
给初学者的30条PHP最佳实践(荒野无灯)
Aug 02 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
Dec 29 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
Mar 18 PHP
PHP获取当前完整URL地址的函数
Dec 21 PHP
网站防止被刷票的一些思路与方法
Jan 08 PHP
php封装的mysqli类完整实例
Oct 18 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
PHP切割汉字的常用方法实例总结
Apr 27 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
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
js实现文字截断功能
2016/09/14 Javascript
谈谈第三方App接入微信登录 解读
2016/12/27 Javascript
jQuery模拟窗口抖动效果
2017/03/15 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
微信小程序云开发(数据库)详解
2019/05/17 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
vue配置多代理服务接口地址操作
2020/09/08 Javascript
axios封装与传参示例详解
2020/10/18 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
[45:15]Optic vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
pytyon 带有重复的全排列
2013/08/13 Python
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
2019/03/22 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
给 TensorFlow 变量进行赋值的方式
2020/02/10 Python
Python实现代码块儿折叠
2020/04/15 Python
python实现三壶谜题的示例详解
2020/11/02 Python
python中二分查找法的实现方法
2020/12/06 Python
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
课堂教学改革实施方案
2014/03/17 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书