企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
~~~ <?php //单例模式 class Site{ //属性 public $siteName; //本类的静态实例 protected static $instance = null; //禁用掉构造器 private function __construct($siteName) { $this->siteName = $siteName; } //获取本类的唯一实例 public 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('www.php.cn'); } } //对象注册树 /** * Class Register * 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'); ~~~ 对象注册树其实就是一个容器类,用来管理类的依赖(类实例)