/**
* 單例模式
*/
class Site
{
//屬性
public $siteName;
//本類的靜態實例
public static $instance = null;
//禁用掉構造器
private function __construct($siteName)
{
$this->siteName = $siteName;
}
//獲取本類唯一實例
public static function getInstance($siteNme = '默認siteName值')
{
//判斷實例是不是自己的一個實例
if(!self::$instance instanceof self){
self::$instance = new self($siteNme);
}
return self::$instance;
}
}
/**
* 工廠模式
* 生成本類的單一實例
* Class Factory
*/
class Factory
{
public static function create($patternName)
{
return Site::getInstance($patternName);
}
}
/**
* 對象注冊樹
* 注冊:set(); 把對象掛到書上
* 獲取:get(); 把對象從樹上獲取下來
* 注銷:_unset(); 把對象銷毀
* Class Register
*/
class Register
{
//創建對象數組
protected static $object = [];
//傳參 $alias 別名 $object 真正的對象
//生成對象并掛到樹上
public static function set($alias,$object)
{
self::$object[$alias] = $object;
}
// 把對象從樹上獲取下來
public static function get($alias)
{
return self::$object[$alias];
}
// 把對象銷毀
public static function _unset($alias)
{
unset(self::$object[$alias]);
}
}
Register::set('zhangObj',Factory::create('實例個雞兒1'));
$obj = Register::get('zhangObj');
var_dump($obj);
運行結果:
object(Site)[1]
public 'siteName' => string '實例個雞兒1' (length=16)