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 相关文章推荐
杏林同学录(七)
Oct 09 PHP
PHP的FTP学习(四)
Oct 09 PHP
php 过滤危险html代码
Jun 29 PHP
PHP定时自动生成静态HTML的实现代码
Jun 20 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
百度实时推送api接口应用示例
Oct 21 PHP
php微信支付之APP支付方法
Mar 04 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
Nov 09 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
PHP多进程编程实例详解
Jul 19 PHP
laravel框架实现后台登录、退出功能示例
Oct 31 PHP
PHP 裁剪图片
Mar 09 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
PHP4之COOKIE支持详解
2006/10/09 PHP
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
Thinkphp中数据按分类嵌套循环实现方法
2014/10/30 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
jquery each()源代码
2011/02/14 Javascript
AngularJS的内置过滤器详解
2015/05/14 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
javascript高级编程之函数表达式 递归和闭包函数
2015/11/29 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
Vue 实现拨打电话操作
2020/11/16 Javascript
调试Python程序代码的几种方法总结
2015/04/28 Python
python中while循环语句用法简单实例
2015/05/07 Python
Python 2与Python 3版本和编码的对比
2017/02/14 Python
CentOS中升级Python版本的方法详解
2017/07/10 Python
Python实现快速计算词频功能示例
2018/06/25 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
windows上安装python3教程以及环境变量配置详解
2019/07/18 Python
德国电子商城:ComputerUniverse
2017/04/21 全球购物
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
关于环保的活动方案
2014/08/25 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
慈善募捐倡议书
2015/04/27 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书
小学语文教学反思范文
2016/03/03 职场文书
一文读懂navicat for mysql基础知识
2021/05/31 MySQL
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript