注册树模式
- 顾名思义,是将对象挂载到一个对象书上
- 需要使用某个对象时,从对象树上加载该对象即可
- 因此,对象树一定是全局的
代码demo
/**
* Class Tree
* @package 注册树模式
*/
class Tree
{
/*树枝*/
protected static $objects = null;
/*将对象挂载到树干上*/
public static function set($key,$object)
{
self::$objects[$key] = $object;
}
/*从树干上获取对象*/
public static function get($key)
{
if (!isset(self::$objects[$key])) {
//self::set($key,$className);
self::$objects[$key] = new $key;
}
return self::$objects[$key];
}
/*删除对象*/
public static function _unset($className) {
unset(self::$objects[$className]);
}
}
使用方法
$test = new Test;
Tree::set('test',$test);
//Tree::set('b',B); 如果有其他类
//Tree::set('a',A); 如果有其他类
dump(Tree::get("test")->getData());
//dump(Tree::get("a")->getData());
//dump(Tree::get("b")->getData());
测试的Test类
class Test
{
public function getData()
{
return '我是test类 获取到了';
}
}
运行截图