PHP设计模式 注册表模式(多个类的注册)

yipeiwu_com6年前PHP代码库
以前我也写过一个注册表类,不过那一个不能进行多个类的注册,下面用数组对类进行了存储。
复制代码 代码如下:

<?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中用PHPMailer来发送邮件的示例(126.com的例子)

<?phprequire_once('../class.phpmailer.php');$mail= new PHPMailer();$body= "我终于发送邮件成功了!呵呵!g...

php中使用session防止用户非法登录后台的方法

本文实例讲述了php中使用session防止用户非法登录后台的方法。分享给大家供大家参考。具体如下: 一般来说,我们登录网站后台时,服务器会把登录信息保存到session文件里,并通过读...

PHP中类属性与类静态变量的访问方法示例

本文实例讲述了PHP中类属性与类静态变量的访问方法。分享给大家供大家参考,具体如下: <?php /* PHP类属性与类静态变量的访问 * Created on 20...

探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法

【造成原因】:Because PHP's integer type is signed, and many IP addresses will result in negative in...

php实现解析xml并生成sql语句的方法

php实现解析xml并生成sql语句的方法

本文实例讲述了php实现解析xml并生成sql语句的方法。分享给大家供大家参考,具体如下: php解析xml有很多种办法,文档中有,搜索一下就一大把的。 今天遇到一个需求:将某个xml中...