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

    赞赏作者

    微信交流

  • 相关阅读:
    Fiddler使用教程(收藏)
    js类的几种写法
    对js中prototype的理解
    【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)--转
    js加载顺序
    html加载js那些事
    HTTP状态码详解
    JS编码解码
    css绝对定位、相对定位和文档流的那些事
    jQuery事件绑定方法bind、 live、delegate和on的区别
  • 原文地址:https://www.cnblogs.com/taoshihan/p/14899563.html
Copyright © 2011-2022 走看看