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中unlink()、mkdir()、rmdir()等方法的使用介绍
Dec 21 PHP
PHP中copy on write写时复制机制介绍
May 13 PHP
PHP实现清除wordpress里恶意代码
Oct 21 PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 PHP
thinkPHP5.0框架环境变量配置方法
Mar 17 PHP
详解使用php调用微信接口上传永久素材
Apr 11 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
Aug 07 PHP
PHP实现验证码校验功能
Nov 16 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 PHP
php服务器的系统详解
Oct 12 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 PHP
PHP实现两种排课方式
Jun 26 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基础学习小结
2011/04/17 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
PDO::query讲解
2019/01/29 PHP
[推荐]javascript 面向对象技术基础教程
2009/03/03 Javascript
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
Node.js实现简单管理系统
2019/09/23 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
[00:37]2016完美“圣”典风云人物:AMS宣传片
2016/12/06 DOTA
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
详解Python编程中time模块的使用
2015/11/20 Python
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
对PyTorch torch.stack的实例讲解
2018/07/30 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
Python多线程处理实例详解【单进程/多进程】
2019/01/30 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
请解释接口的显式实现有什么意义
2012/05/26 面试题
全民健身日活动方案
2014/01/29 职场文书
公司运动会策划方案
2014/05/25 职场文书
Python中如何处理常见报错
2022/01/18 Python