1. 程式人生 > 其它 >[PHP] 理解依賴注入容器

[PHP] 理解依賴注入容器

容器就是個存東西的地方

依賴注入,就是通過建構函式,屬性或者set方法傳遞物件的方式

如果依賴的類太多了,那麼通過上面的方式傳遞物件就很繁瑣

那麼我們就可以直接傳進去一個容器,需要的時候就在容器裡面去拿就簡單多了

這就是我們的容器類

//簡單容器類
class Container {
    private $s=array();
    function __set($k, $c) { $this->s[$k]=$c; }
    function __get($k) { return $this->s[$k]($this); }
}

User類裡面需要使用Book和Goods物件,在容器裡建立後,在User類裡面只需要直接拿就可以了

class User{
    private $c;
    public function __construct(Container $c)
    {
        $this->c=$c;
    }
    public function doBook(){
        $this->c->book->toDo();
    }
    public function doGoods(){
        $this->c->goods->toDo();
    }
}
class Book{
    public function toDo(){
        echo 
"do book\n"; } } class Goods{ public function toDo(){ echo "do goods\n"; } } $c=new Container(); $c->book=function(){ return new Book(); }; $c->goods=function(){ return new Goods(); }; $user=new User($c); $user->doBook(); $user->doGoods();