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语言中global和$GLOBALS[]的分析 之二
Feb 02 PHP
深入extjs与php参数交互的详解
Jun 25 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
Aug 01 PHP
Yii2简单实现给表单添加验证码的方法
Jul 18 PHP
PHP单例模式详解及实例代码
Dec 21 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
PHP7基于curl实现的上传图片功能
May 11 PHP
详解Laravel服务容器的绑定与解析
Nov 05 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
Feb 27 PHP
如何用PHP websocket实现网页实时聊天
May 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 header()函数使用说明
2008/07/10 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
简单了解python的内存管理机制
2019/07/08 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
浅谈HTML5 &amp; CSS3的新交互特性
2016/07/19 HTML / CSS
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
给海归自荐信的建议
2013/12/13 职场文书
毕业生自荐书模版
2014/01/04 职场文书
物业管理毕业生的自我评价
2014/02/17 职场文书
国际贸易专业自荐信
2014/06/10 职场文书
扬尘污染防治方案
2014/06/15 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书
导游词之广西漓江
2019/11/02 职场文书
JavaScript 对象创建的3种方法
2021/11/17 Javascript