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实现网站插件机制的方法
Nov 10 PHP
PHP 全角转半角实现代码
May 16 PHP
PHP的简易冒泡法代码分享
Aug 28 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 PHP
PHP实现数组递归转义的方法
Aug 28 PHP
php中实现记住密码下次自动登录的例子
Nov 06 PHP
php实现的用户查询类实例
Jun 18 PHP
php删除数组中重复元素的方法
Dec 22 PHP
CI(CodeIgniter)模型用法实例分析
Jan 20 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
php-msf源码详解
Dec 25 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 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
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
详解Node.js串行化流程控制
2017/05/04 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
Node.js 基础教程之全局对象
2017/08/06 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
详细介绍Python语言中的按位运算符
2013/11/26 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
django删除表重建的实现方法
2019/08/28 Python
Python autoescape标签用法解析
2020/01/17 Python
python实现简单的购物程序代码实例
2020/03/03 Python
浅析python实现动态规划背包问题
2020/12/31 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
总经理助理岗位职责范本
2014/07/20 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
PHP中多字节字符串操作实例详解
2021/08/23 PHP
Redis三种集群模式详解
2021/10/05 Redis