php中注册器模式类用法实例分析


Posted in PHP onNovember 03, 2015

本文实例讲述了php中注册器模式类用法。分享给大家供大家参考,具体如下:

注册器读写类
Registry.class.php

<?php
/** 
 * 注册器读写类 
 */
class Registry extends ArrayObject
{
  /** 
   * Registry实例
   *
   * @var object 
   */
  private static $_instance = null;
  /**
   * 取得Registry实例
   * 
   * @note 单件模式
   * 
   * @return object
   */
  public static function getInstance()
  {
    if (self::$_instance === null) {
      self::$_instance = new self();
      echo "new register object!";
    }
    return self::$_instance;
  }
  /**
   * 保存一项内容到注册表中
   * 
   * @param string $name 索引
   * @param mixed $value 数据
   * 
   * @return void
   */
  public static function set($name, $value)
  {
    self::getInstance()->offsetSet($name, $value);
  }
  /**
   * 取得注册表中某项内容的值
   * 
   * @param string $name 索引
   * 
   * @return mixed
   */
  public static function get($name)
  {
    $instance = self::getInstance();
    if (!$instance->offsetExists($name)) {
      return null;
    }
    return $instance->offsetGet($name);
  }
  /**
   * 检查一个索引是否存在 
   * 
   * @param string $name 索引
   * 
   * @return boolean
   */
  public static function isRegistered($name)
  {
    return self::getInstance()->offsetExists($name);
  }
  /**
   * 删除注册表中的指定项
   * 
   * @param string $name 索引
   * 
   * @return void
   */
  public static function remove($name)
  {
    self::getInstance()->offsetUnset($name);
  }
}

需要注册的类
 
test.class.php

<?php
class Test
{
   function hello()
   {
    echo "hello world";
    return;
   }
} 
?>

测试 test.php

<?php
//引入相关类
require_once "Registry.class.php";
require_once "test.class.php";
//new a object
$test=new Test();
//$test->hello();
//注册对象
Registry::set('testclass',$test);
//取出对象
$t = Registry::get('testclass');
//调用对象方法
$t->hello();
?>

希望本文所述对大家php程序设计有所帮助。

PHP 相关文章推荐
PHP cron中的批处理
Sep 16 PHP
php xml-rpc远程调用
Dec 19 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
使用HMAC-SHA1签名方法详解
Jun 26 PHP
php 表单提交大量数据发生丢失的解决方法
Mar 03 PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 PHP
Yii多表联合查询操作详解
Jun 02 PHP
Yii+upload实现AJAX上传图片的方法
Jul 13 PHP
php中通过eval实现字符串格式的计算公式
Mar 18 PHP
PHP实现15位身份证号转18位的方法分析
Oct 16 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 PHP
如何在centos8自定义目录安装php7.3
Nov 28 PHP
php实现zip文件解压操作
Nov 03 #PHP
thinkphp如何获取客户端IP
Nov 03 #PHP
php去除二维数组的重复项方法
Nov 03 #PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 #PHP
smarty简单应用实例
Nov 03 #PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 #PHP
php获取远程文件的内容和大小
Nov 03 #PHP
You might like
php实现比较全的数据库操作类
2015/06/18 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
php格式文件打开的四种方法
2018/02/24 PHP
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
JavaScript模拟push
2016/03/06 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
JS使用onerror捕获异常示例
2016/08/03 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
2018/04/24 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
解决layui使用layui-icon出现默认图标的问题
2019/09/11 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
wxPython使用系统剪切板的方法
2015/06/16 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
python调用staf自动化框架的方法
2018/12/26 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
人力资源主管岗位职责
2014/01/29 职场文书
新教师个人工作总结
2015/02/06 职场文书
刑事起诉书范文
2015/05/19 职场文书
对学校的意见和建议
2015/06/04 职场文书
酒店员工管理制度
2015/08/05 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
Mysql基础之常见函数
2021/04/22 MySQL
python中的装饰器该如何使用
2021/06/18 Python
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers