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基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 PHP
php 动态多文件上传
Jan 18 PHP
PHP开发中四种查询返回结果分析
Jan 02 PHP
用PHP来计算某个目录大小的方法
Apr 01 PHP
PHP封装CURL扩展类实例
Jul 28 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
PHP 绘制网站登录首页图片验证码
Apr 12 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
Nov 09 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
Sep 18 PHP
php json转换相关知识(小结)
Dec 21 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://output和php://stdout的区别
2018/05/06 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
checkbox 复选框不能为空
2009/07/11 Javascript
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
javascript实现C语言经典程序题
2015/11/29 Javascript
node.js入门实例helloworld详解
2015/12/23 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
jQuery实现背景滑动菜单
2016/12/02 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
jquery replace方法去空格
2017/05/08 jQuery
AngularJS中的promise用法分析
2017/05/19 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
编写Python的web框架中的Model的教程
2015/04/29 Python
Flask框架学习笔记之使用Flask实现表单开发详解
2019/08/12 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
Python实现中英文全文搜索的示例
2020/12/04 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
领导党性分析材料
2014/02/15 职场文书
高中军训第一天感言
2014/03/06 职场文书
公司副总经理岗位职责
2015/04/08 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
Mysql 如何查询时间段交集
2021/06/08 MySQL