<?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);