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

    <?php
    
    //依赖注入与容器  
    class Luntai{
        
        function roll(){
            echo "这是轮胎类::";
        }
    }
    
    
    class Bmw{
    
        protected $Luntai;
        //注入方式---构造函数注入,还可通过set方式注入
        function __construct($Luntai) {
            $this->Luntai = $Luntai;
        }
    
        function run() {
            $this->Luntai->roll(); //调用luntai类的 roll方法
            echo "这是宝马的轮胎";
        }
    }
    
    //使用方法
    /*$luntai = new Luntai();
    $bmw = new Bmw($luntai);
    $bmw->run();  //这是轮胎类::这是宝马的轮胎
    */
    
    
    
    /**
     * 容器
     */
    class Container
    {
        //存放所要绑定的类
        static $register = [];
    
        //绑定函数
        //closure 就是个闭包的类型
        static function bind($name, Closure $col) {
            //将键值对存到register中
            //键就是name 值就是col
            self::$register[$name] = $col;
        }
    
        //创建对象函数
        static function make($name){
            $col = self::$register[$name];
            return $col();
        }
    }
    
    //将要实例化的类,绑定到register中去。
    //以后用到的时候只需要通过make方法获取即可,不需要再重复实例化 ,类似于redis 键值对
    Container::bind('luntai', function(){
        return new Luntai();
    });
    
    Container::bind('bmw', function(){
        return new Bmw(Container::make('luntai'));
    });
    
    $bmw = Container::make('bmw'); //根据键值调用bmw类,并使用其方法
    $bmw->run();
  • 相关阅读:
    项目进度管理-PMBook 第六章
    项目范围管理-PMBook 第五章
    PMBook 中的开发生命周期
    项目整合管理-PMBook 第四章
    PMP 学习心得
    二维码的来源和生活应用
    package main 红色波浪线
    JS中监听事件的几种方法
    PEP8规范
    RestFul API 规范
  • 原文地址:https://www.cnblogs.com/yszr/p/13304874.html
Copyright © 2011-2022 走看看