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实现框架(一)
Oct 09 PHP
实用函数9
Nov 08 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 PHP
PHP时间戳与日期之间转换的实例介绍
Apr 19 PHP
php自定义的格式化时间示例代码
Dec 05 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
PHP页面跳转操作实例分析(header方法)
Sep 28 PHP
PHP生成指定范围内的N个不重复的随机数
Mar 18 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
Apr 23 PHP
PHP 命名空间和自动加载原理与用法实例分析
Apr 29 PHP
php TP5框架生成二维码链接
Apr 01 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
PHP6 mysql连接方式说明
2009/02/09 PHP
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
javascript基本语法分析说明
2008/06/15 Javascript
jquery 表单取值常用代码
2009/12/22 Javascript
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
如何使用three.js 制作一个三维的推箱子游戏
2020/07/29 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
[42:32]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第二局
2016/02/27 DOTA
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
python字符串替换示例
2014/04/24 Python
收集的几个Python小技巧分享
2014/11/22 Python
浅析Python中的多进程与多线程的使用
2015/04/07 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
中专生职业生涯规划书范文
2014/01/10 职场文书
教师节促销方案
2014/03/22 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书