这是 IoC 吗?
参考 http://weibo.com/p/230418661838ca0102vbhb
http://laravelacademy.org/post/769.html
新手对 Ioc 的理解,不知对不对。
<?php
class Ioc
{
public $arr=[];
public function set($key,$course)
{
$this->arr[$key]=$course;
}
public function get($key,$class='')
{
return $this->arr[$key]($class);
}
}
class Fac
{
public static $ins;
public static function create($class){
return self::$ins=$class;
}
}
class Pro1
{
function test(){
echo 'i am Pro1';
}
function demo(){
echo '对象不会被覆盖';
}
}
class Pro2
{
function test(){
echo 'i am Pro2';
}
}
$Fac=function ($class){
return Fac::create($class);
};
$Pro1=function(){
return new Pro1;
};
$Pro2=function(){
return new Pro2;
};
$Ioc=new Ioc;
$Ioc->set('Fac',$Fac);
$Ioc->set('Pro1',$Pro1);
$Ioc->set('Pro2',$Pro2);
$Pr1=$Ioc->get('Fac',$Ioc->get('Pro1'));
$Pr2=$Ioc->get('Fac',$Ioc->get('Pro2'));
$Pr1->test();// i am Pro1
$Pr2->test();// i am Pro2
$Pr1->demo();//对象不会被覆盖
不是
IoC 控制反转 = DI 依赖注入 + DL 依赖查找
这里没有依赖,体现不出来 。
这里只简易体现了 容器 工厂 这两个概念
容器
不仅仅存储对象,他的作用是共享工厂
构建对象,具体的一个或一类对象给
工厂
一个配置,基于外部声明来实例化类 ,则可以说是实现了IoC
@fantiq 大神弄个接口,这算依赖注入。像这样
可依赖查询是要怎么定义的?
@jc91715 可以先看下 laravel Controller里面的依赖注入实现,依赖注入就是 根据你的依赖声明帮你实例化