IOC注入反转思路-仅供参考

<?php

class Db
{

    public function __construct()
    {

    }

    public function connect()
    {
        return "连接DB";
  }
}

class Ioc
{
    public static $reg = [];

  /**
 * @func 添加一个反转的对象到容器中
  * @param $name
  * @param Closure $resolved
  */
  public static function register($name, Closure $resolved)
    {
        static::$reg[$name] = $resolved;
  }

    /**
 * @func 根据name返回实类
  * @param $name
  * @return mixed
 */  public static function resolve($name)
    {

        if (static::register($name)) {
            $obj = static::$reg[$name];
            return $obj();
        }
    }
}

//注入
//第二个参数是闭包
Ioc::register('db', function () {
    new Db();
});

//反转
$db = Ioc::resolve('db');
$db->connect();
本作品采用《CC 协议》,转载必须注明作者和本文链接
有梦想的人睡不着,没有梦想的人睡不醒。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!