[PHP] 理解依賴注入容器
阿新 • • 發佈:2021-06-18
容器就是個存東西的地方
依賴注入,就是通過建構函式,屬性或者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();