这篇文章主要介绍了php中注册器模式类用法,以实例形式分析了注册器读写类的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了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程序设计有所帮助。
新闻热点
疑难解答