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

    赞赏作者

    微信交流

  • 相关阅读:
    向量的内积和外积
    软件姿态解算
    PLC与外接按钮开关接线方法图解
    关于三极管处于临界饱和状态的分析
    C语言中的volatile——让我保持原样
    C语言异或运算在程序设计中的妙用
    各种转PDF
    javax.mail发送邮件功能
    MySQL总结
    idea永久破解
  • 原文地址:https://www.cnblogs.com/taoshihan/p/14899563.html
Copyright © 2011-2022 走看看