1,注册树模式是通过将实例化对象放到一颗全局的对象树上(池子冲)
2,需要用的时候从注册树上(池子中)直接取
<?php
class Register
{
/**
* 注册树池子,存储对象
* @var null
*/
protected static $objects = null;
/**
*将对象挂到树上,将实例化的对象放入池子中
* @param $key
* @param $objects
*/
public static function set($key, $objects)
{
self::$objects[$key] = new $objects;
}
/**
* 从注册树上(从注册树池子中)获取对对象,如果没有则注册
* @param $key
* @return mixed
*/
public static function get($key)
{
if (!isset(self::$objects[$key])){
self::$objects[$key] = new $key;
}
return self::$objects[$key];
}
/**
* 删除注册上的对象
* @param $key
*/
public static function _unset($key)
{
unset(self::$objects[$key]);
}
}
使用方法:
<?php
namespace app\controller;
use app\BaseController;
use UserInfo;
class Instance extends BaseController
{
public function getRegister()
{
$a = new UserInfo();
\Register::set('user',$a);
// $name = \Register::get("UserInfo")->getName();
$name = \Register::get("user")->getName();
halt($name);
}
}
|