php 注册树设计模式

tp5.1/extend/Register.php

 <?php

 /**
  * 注册书模式
  *     注册树模式通过将对象实例注册到一颗全局的对象书上
  *     需要的时候从对象树上拿出来使用即可
  *
  * Class Register
  */

class Register
{
    /**
     * 注册树池子
     * @var null
     */
    protected  static  $objects = null;

    /**
     * 将对象挂到树上
     * @param $key
     * @param $object
     */
    public  static function setObjects($key,$object)
    {
        self::$objects[$key]=$object;
    }


    /**
     * 从树上回去对象, 如果没有则注册
     * @return mixed
     */
    public static function getObjects($key)
    {
        if (!isset(self::$objects[$key])){
            self::$objects[$key]= new  $key;
        }
        return  self::$objects[$key];
    }

    /**
     * 注销类
     * @param $key
     */
    public  static  function  _unsetObjects($key)
    {
        unset(self::$objects[$key]);
    }
}


tp5.1/extend/A.php


<?php




class A
{
    public  function  run()
    {
        return 'abc';
    }
}

tp5.1\application\index\controller\Index.php

 public  function  register()
    {
      $a = new  \A();
      \Register::setObjects('a',$a);
      $res= \Register::getObjects('a')->run();
      dump($res);
    }

访问:

php think run

http://127.0.0.1:8000/index/index/register

string 'abc' (length=3)
posted @ 2021-07-28 09:56  这该死的代码  阅读(64)  评论(0编辑  收藏  举报