zoukankan      html  css  js  c++  java
  • [PHP] 理解依赖注入容器

    容器就是个存东西的地方

    依赖注入,就是通过构造函数,属性或者set方法传递对象的方式

    如果依赖的类太多了,那么通过上面的方式传递对象就很繁琐

    那么我们就可以直接传进去一个容器,需要的时候就在容器里面去拿就简单多了

    这就是我们的容器类

    //简单容器类
    class Container {
        private $s=array();
        function __set($k, $c) { $this->s[$k]=$c; }
        function __get($k) { return $this->s[$k]($this); }
    }

    User类里面需要使用Book和Goods对象,在容器里创建后,在User类里面只需要直接拿就可以了

    class User{
        private $c;
        public function __construct(Container $c)
        {
            $this->c=$c;
        }
        public function doBook(){
            $this->c->book->toDo();
        }
        public function doGoods(){
            $this->c->goods->toDo();
        }
    }
    class Book{
        public function toDo(){
            echo "do book
    ";
        }
    }
    class Goods{
        public function toDo(){
            echo "do goods
    ";
        }
    }
    $c=new Container();
    $c->book=function(){
      return new Book();
    };
    $c->goods=function(){
        return new Goods();
    };
    $user=new User($c);
    $user->doBook();
    $user->doGoods();

    开源作品

    GO-FLY,一套可私有化部署的免费开源客服系统,安装过程不超过五分钟(超过你打我 !),基于Golang开发,二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的网页在线客服系统,致力于帮助广大开发者/中小站长快速整合私有客服功能
    github地址:go-fly
    官网地址:https://gofly.sopans.com

    赞赏作者

    微信交流

  • 相关阅读:
    K-邻近算法
    算法
    (12)ubunto 快捷键
    (38)C#IIS
    RichEditControl(富文本控件)
    Gaugecontrol(测量仪器图形控件)
    鏖战字符串
    bzoj3713 [PA2014]Iloczyn|暴力(模拟)
    约会安排HDU
    hdu4614 线段树+二分 插花
  • 原文地址:https://www.cnblogs.com/taoshihan/p/14899563.html
Copyright © 2011-2022 走看看