ThinkPHP筆記5——PHP常用設計模式(單例、工廠、註冊樹)
阿新 • • 發佈:2019-01-07
<?php //單例模式 class Site{ //屬性 public $siteName; //本類的靜態例項 private static $instance = null; //禁用構造方法 private function __construct($siteName){ $this->siteName=$siteName; } //克隆方法私有化 private function __clone(){} //生成當前類的唯一例項 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($siteName){ return Site::getInstance($siteName); } } //物件註冊樹 /** * 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('www.php.cn')); //從樹上取下一個物件下來 $obj=Register::get('site'); var_dump($obj);