单例模式
class Site
{
//属性
public $demoName;
//本类的静态实例
protected static $instance= null;
//禁用掉构造器
private function __construct($demoName){
$this->demoName=$demoName;
}
//获取本类唯一实例
public static function getInstance($instance='我的单例模式'){
if (!self::$instance instanceof self){
self::$instance =new self($instance);
}
return self::$instance;
}
}
工厂模式
class Factory{
//创建指定类的实例
public static function create(){
return Site::getInstance();//这里可以传递参数
}
}
对象注册树
/**
* 1注册set(),把对象挂到树上
* 2获取get()把对象取下来用
* 3_unset():把对象吃掉
**/
Class Register
{
//创建对象:数组
protected static $objects=[];
//生成对象并上树
public static function set($alias,$objects){
self::$objects[$alias]=$objects;
}
//从树上取下对象
public static function get($alias){
return self::$objects[$alias];
}
//把树上的对象吃掉
public static function _unset($alias){
unset(self::$objectsp[$alias]);
}
}
实例化对象
//将site 类的实例对象上树,放到对象池
Register::set('site',Factory::create());
//从树上取下来一个对象
$obj= Register::get('site');
var_dump($obj);
echo '<hr>';
echo $obj->demoName;