yangakw yangakw

依赖注入di和控制反转ioc

in 代码read (38) 文章转载请注明来源!

什么是依赖,a类在代码中用到了b类,可以理解b是a的依赖。

用代码解释

<?php
class b{

}
class a{
    function dosomething(){
        $b =new b();
    }
}
?>

这种写法属于强耦合的以后维护会有很多弊端。
可以用依赖注入的方式解决,把需要的外部类通过参数引入

用代码解释

<?php
class b{

}
class a{
    function dosomething(b $b){
 
    }
}
?>

如何管理各种依赖之间的关系可以使用控制反转进行解决,原理就是把所有依赖注入到一个容器类。

用代码解释

<?php 
class b{

}
class a{
    function dosomething(b $b){
 
    }
}
class Container
    {
        private static $s = [];
    
        public  function  __set($k, $c)
        {
            $this->s[$k] = $c;
        }
    
        public  function  __get($k)
        {
            return $this->s[$k]($this);
        }
    }
    
    $c = new Container();
    
    $c->foo = function(){
        return new b();
    };
    
    $a=new a();
    $a->dosomething($c->foo);
?>

jrotty WeChat Pay

微信打赏

jrotty Alipay

支付宝打赏

文章二维码

扫描二维码,在手机上阅读!

发表新评论
博客已运行
© 2017 yangakw
PREVIOUS NEXT
雷姆
拉姆