简单易懂的说下php ioc控制反转 di容器,不喜勿喷
di容器就是指当你需要一个资源的时候直接找容器要,容器接管了主导权,这也就是相对平常我们需要正向去主动new一个对象,现在就是被di容器“反转控制”了,我们只能去求这它要,从而被动接受了,其中我需要的对象也要好资源也罢,它们的依赖关系咱都别管容器来搞定,这就是ioc和di。
我们来看几个例子
原始的
class phone
{
public $obj;
public function __construct()
{
$this->obj = new usb();//注意这里主动去new了需要的对象
}
public function act()
{
$this->obj->dosth();
}
}
class usb
{
public function dosth(){
echo 1;
}
}
$phone = new phone();
$phone->act();
这里是在类里面去new的,也就是主动去要的,我们接下来要剥夺它的权利,不给它new,看下面代码
class phone
{
public $obj;
public function __construct($obj)
{
$this->obj = $obj;//注意这里剥夺权利了
}
public function act()
{
$this->obj->dosth();
}
}
class usb
{
public function dosth(){
echo 1;
}
}
$usb=new usb;