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 相关文章推荐
建站常用13种PHP开源CMS比较
Aug 23 PHP
PHP 面向对象实现代码
Nov 11 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 PHP
用php随机生成福彩双色球号码的2种方法
Feb 04 PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
Apr 24 PHP
ThinkPHP模板中数组循环实例
Oct 30 PHP
PHP+MySQL删除操作实例
Jan 21 PHP
php构造方法中析构方法在继承中的表现
Apr 12 PHP
php简单实现多维数组排序的方法
Sep 30 PHP
php实现文章评论系统
Feb 18 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
Mar 18 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_Flame(Version:Progress)的原代码
2006/10/09 PHP
BBS(php &amp; mysql)完整版(五)
2006/10/09 PHP
PHP的FTP学习(四)
2006/10/09 PHP
PHP输入流php://input介绍
2012/09/18 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
Js中sort()方法的用法
2006/11/04 Javascript
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
python写一个md5解密器示例
2018/02/23 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
python进行TCP端口扫描的实现
2018/12/21 Python
Python判断telnet通不通的实例
2019/01/26 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
详解python中index()、find()方法
2019/08/29 Python
基于python实现文件加密功能
2020/01/06 Python
Python3.8安装Pygame教程步骤详解
2020/08/14 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
Otticanet意大利:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
企业军训感言
2014/02/08 职场文书
局火灾防控工作方案
2014/05/25 职场文书
上课说话检讨书500字
2014/11/01 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
旅游投诉信范文
2015/07/02 职场文书
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL