这是 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();//对象不会被覆盖
推荐文章: