• 依赖注入学习-01


    <?php
    
    /*
        无Di容器的写法
        
        
        class example {
            private $_db;
            function getList(){
                $this->_db->query("......");//这里具体sql语句就省略不写了
            }
            //从外部注入db连接
            function setDb($connection){
                $this->_db = $connection;
            }
        }
        //调用
        $example = new example();
        $example->setDb(Factory::getDb());//注入db连接
        $example->getList();
        
        
        class Factory {
            public static function getExample(){
                $example = new example();
                $example->setDb(Factory::getDb());//注入db连接
                $example->setFile(Factory::getFile());//注入文件处理类
                $example->setImage(Factory::getImage());//注入Image处理类
                return $expample;
            }
        }
        实例化example时变为
        $example=Factory::getExample();
        $example->getList();
    */
    
    
    
    
    
    header("Content-Type:text/html;charset=utf-8");
    
    class Di{
        private $_factory;
        public function set($id,$value){
            $this->_factory[$id] = $value;
        }
        
        public function get($id){
            $value = $this->_factory[$id];
            return $value();
        }
    }
    
    class User{
        private $_username;
        function __construct($username="") {
            $this->_username = $username;
        }
        function getUserName(){
            return $this->_username;//$this->_username = $username;
        }
    }
    
    $di = new Di();
    $di->set("zhangsan",function(){
        return new User('张三');
    }); //$this->_factory['zhangsan'] = new User('张三');
    
    $di->set("lisi",function(){
       return new User("李四"); 
    }); //$this->_factory['lisi'] = new User('李四');
    
    
    echo $di->get("zhangsan")->getUserName();// $value = $this->_factory['zhangsan'] = new User('张三')->getUserName();
    echo $di->get("lisi")->getUserName();// $value = $this->_factory['lisi'] = new User('李四')->getUserName();
    
    
    /* $data = new User('张三');
    echo $data->getUserName(); */

     

  • 相关阅读:
    Jmeter(四十一)分布式测试(转!)
    Jmeter(四十)BeanShell范例
    Jmeter(三十九)User.Properties定义全局变量
    Jmeter(三十八)Jmeter Question 之 ‘批量执行SQL语句’
    接口测试“八重天”---HttpClient
    常见的性能测试误区
    UI“三重天”之appium(一)
    Jmeter(三十七)源码导入IDE(转!)
    UI“三重天”之selenium--常用API和问题处理(三)
    kotlin 1.3
  • 原文地址:https://www.cnblogs.com/hellowzd/p/5889849.html
Copyright © 2020-2023  润新知