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 协议》,转载必须注明作者和本文链接