<?php
//单例模式
class Site{
//属性
public $siteName;
//本类的静态实力
protected static Sinstance = null;
//禁用掉构造器
private function __construct($siteName)
{
$this->siteName = $siteName;
}
//获取本类唯一实例
public static function getInstance($siteName="php中文网")
{
if(!self::$instance instanceof self){
self::$instance = new self($siteName);
}
return self::$instance;
}
}
//工厂模式
class Factory{
//创建指定类的实例
public static function create()
{
return Site::getInstance('hello world');
}
}
//注册树模式[容器模式]
//1、注册:set()把对象放入容器
//2、获取:get()把对象从容器中取出
//3、注销:_unset():把对象销毁
class Register
{
//创建对象池,数组
protected static $objects=[];
//生成对象
public static function set($alias,$object){
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);
echo "<hr>";
echo $obj->siteName;
?>