概念:将对象注册到全局的树上,任何地方直接去访问。

 

实例:

定义注册树模式类

<?php

namespace app;

/**
 * 注册树模式实例类
 * Class Register
 * @package app
 */
class Register
{
    /**
     * 定义全局树,当成一个全局变量可能更好理解
     */
    protected static $object;

    /**
     * 定义设置注册方法: 把$val对象放到树上
     * @param $key
     * @param $val
     */
    public static function set($key, $val)
    {
        self::$object[$key] = $val;
    }

    /**
     * 获取注册树中的对象
     * @param $key
     */
    public static function get($key)
    {
        return self::$object[$key];
    }

    /**
     * 删除注册树中的对象
     * @param $key
     */
    public static function _unset($key)
    {
        unset(self::$object[$key]);
    }
}

 

附上我的目录,方便边对比命名空间

 

在任意地方调用注册树,如在index.php中使用

<?php

// 定义自动注册
spl_autoload_register(function ($class) {
    include $class . '.php';
});

// 在注册树中映射db对象(这里只是测试,一般这个动作是要在初始化的适合就要做的)
$db = \app\Database::getInstance();// 获取数据库连接对象
\app\Register::set('db', $db); // 把对象映射到注册树

// 在程序中任意地方调用注册树中的db对象
$res = \app\Register::get('db');

// 删除注册树中的db对象(这里只是测试,一遍这个动作是要在程序结束的地方做)
\app\Register::_unset('db');

 

到此就完成了

posted on 2020-01-07 21:26  _时光悠悠  阅读(487)  评论(0)    收藏  举报