<?php
/**
单例模式
工厂模式
注册树模式
**/
class Site{
//属性
public $siteName;
//本类的静态实例
protected static $instance =null;
//禁用掉构造器
private function __construct($siteName) {
$this->siteName = $siteName;
}
//获取本类唯一实例
public static function getInstance($siteName="设置一个默认参数"){
if(!self::$instance instanceof self){
self::$instance =new self($siteName);
}
return self::$instance;
}
}
//使用工厂模式生成本类的单一实例
class Factory{
public static function create(){
return Site::getInstance("设置的传值");
}
}
/**对象注册树
注册功能set(),把对象挂在树上
获取功能get(),吧对象取下来
注销功能_unset(),吧对象注销
**/
class Register{
//创建对象池
protected static $objects =[];
public static function set($alias,$object){
//self::$objects['$key'] = $value;
self::$objects['$alias'] = $object;
}
//从树上取下对象
public static function get($alias){
return self::$objects['$alias'];
}
//将树上的对象注销掉
public static function _unset($alias){
unset(self::$objects['$alias']) ;
}
}
//使用,将site的实例上树,放到对象池
Register::set("site", Factory::create());
//从树上取一个对象下来
$obj = Register::get('site');
//var_dump($obj);
var_dump($obj->siteName);