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 相关文章推荐
PHP4在Windows2000下的安装
Oct 09 PHP
PHP 将图片按创建时间进行分类存储的实现代码
Jan 05 PHP
php实现的ping端口函数实例
Nov 12 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
PHP的swoole扩展安装方法详细教程
May 18 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
php字符串操作常见问题小结
Oct 11 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
Nov 10 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
May 04 PHP
Yii2框架redis基本应用示例
Jul 13 PHP
laravel 实现向公共模板中传值 (view composer)
Oct 22 PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
Apr 06 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 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
网页上facebook分享功能具体实现
2014/01/26 PHP
php实现猴子选大王问题算法实例
2015/04/20 PHP
PHP多文件上传实例
2015/07/09 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
2016/11/07 PHP
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
最丑的时钟效果!js canvas时钟制作方法
2016/08/15 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
JS中的phototype详解
2017/02/04 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
Angular 作用域scope的具体使用
2017/12/11 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
vue v-for直接循环数字实例
2019/11/07 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
什么是方法的重载
2013/06/24 面试题
计算机大学生的自我评价
2013/10/15 职场文书
建筑施工员岗位职责
2013/11/26 职场文书
公司人力资源的自我评价
2014/01/02 职场文书
学生打架检讨书
2014/02/14 职场文书
家长会学生演讲稿
2014/04/26 职场文书
田径运动会通讯稿
2014/09/13 职场文书
借名购房协议书范本
2014/10/06 职场文书
运动会广播稿200字
2014/10/18 职场文书
高三生物教学反思
2016/02/22 职场文书