zoukankan      html  css  js  c++  java
  • lumen-ioc容器测试 (1)

    lumen-ioc容器测试 (1)

    lumen-ioc容器测试 (2)

    lumen-ioc容器测试 (3)

    lumen-ioc容器测试 (4)

    lumen-ioc容器测试 (5)

    lumen-ioc容器测试 (6)

    代码 

    <?php
    
    
    
    Class Ioc
    {
    	//设置全局的已经绑定过的
    	private $set = [];
    
    	// 存储已经解析对象
    	private $parsed = [];
    
    
    	public function set($name,$value)
    	{
    		$this->set[$name] = $value;
    	}
    
    	public function get($name){
    		if(!isset($this->set[$name])){
    			return false;
    		}
    		// 如果没有解析过 那就解析一下
    		if(empty($this->parsed[$name])){
    			$this->parsed[$name] = $this->set[$name](); // 用括号表示执行回调 才是对象
    		}
    
    		return $this->parsed[$name];
    	}
    }
    
    $ioc = new Ioc();
    
    $ioc->set("redis",function(){
    	$redis = new Redis();
    	$redis->connect("127.0.0.1",6379);
    	return $redis;
    });
    
    $ioc->set("mysql",function(){
    	$pdo = new PDO("mysql:host=127.0.0.1;", "root", "root");
    	return $pdo;
    });
    
    $redis = $ioc->get("redis");
    $mysql = $ioc->get("mysql");
    
    echo "<hr>";
    echo "<pre>";
    echo "ioc容器打印<br>";
    var_dump($ioc);
    
    echo "<hr>";
    echo "<pre>";
    echo "两个资源打印<br>";
    var_dump($redis);
    var_dump($mysql);
    
    echo "<hr>";
    echo "<pre>";
    echo "设置redis测试<br>";
    $redis->set("name",'six');
    var_dump($redis->get("name"));
    
    
    echo "<hr>";
    echo "<pre>";
    echo "查看同时取出多个redis实例化了几个对象<br>";
    
    var_dump($ioc->get("redis"));
    var_dump($ioc->get("redis"));
    var_dump($ioc->get("redis"));
    var_dump($ioc->get("redis"));
    var_dump($ioc->get("redis"));
    

      

    这就是简单容器 其实就是把已经实例化好的对象绑定到某个对象的数组属性里面,要用的时候拿,避免重复实例化耗资源,

    每次实例化要重新分配内存,建立上下文,如果是db 还得建立tcp握手等,反正就是能复用就复用 

    看代码不像laravel lumen的容器 下面一片 优化下命名 

    lumen-ioc容器测试 (2)

  • 相关阅读:
    孙权劝学
    劝学
    为学
    字符串的全排列
    剑指offer面试题3二维数组中的查找
    如何正确安装软件
    写给自己的话
    Linux常用命令
    第三届华为杯
    D^3ctf两道 pwn
  • 原文地址:https://www.cnblogs.com/brady-wang/p/13733831.html
Copyright © 2011-2022 走看看