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
UTF8编码内的繁简转换的PHP类
Jul 09 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
Feb 18 PHP
php之curl实现http与https请求的方法
Oct 21 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
Dec 31 PHP
PHP中Restful api 错误提示返回值实现思路
Apr 12 PHP
mysql_escape_string()函数用法分析
Apr 25 PHP
PHP数据库操作Helper类完整实例
May 11 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
Nov 16 PHP
laravel请求参数校验方法
Oct 10 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
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
PHP Session机制简介及用法
2014/08/19 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
Laravel 5+ .env环境配置文件详解
2020/04/06 PHP
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
2012/07/31 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
javascript数组详解
2014/10/22 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
Angularjs的$http异步删除数据详解及实例
2017/07/27 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
2017/09/28 Javascript
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
详解Python中的文本处理
2015/04/11 Python
从Python程序中访问Java类的简单示例
2015/04/20 Python
让Python更加充分的使用Sqlite3
2017/12/11 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
python中正则表达式与模式匹配
2019/05/07 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
公司年会搞笑主持词
2014/03/24 职场文书
土建施工员岗位职责
2014/07/16 职场文书
关于安全的广播稿
2014/10/23 职场文书
会议主持词开场白
2015/05/28 职场文书
python实现简单聊天功能
2021/07/07 Python