视频中多次提及到依赖注入,网上答案参差不齐,群主可以阐释一下吗?或者有好的资料给我看看?
微信里点“发现”,扫一下
二维码便可将本文分享至朋友圈。
我觉得这两个资料不错:
http://php-di.org/doc/understanding-di.html
http://stackoverflow.com/questions/2255771/how-can-i-use-dependency-injection-in-simple-php-functions-and-should-i-bothe#answer-2553910
简单的说,一个类内部需要用到另一个类,这就是依赖。比如一个用户模型UserModel,获取所有用户的方法是getAllUser(),一般都是通过调用DB类来实现的,它内部可能是这样子:return new DB()->query(“select * …”)。这时我们就说UserModel是依赖于DB的,它们之间存在依赖关系。
上边的代码就是没用到依赖注入,若要用上,一般可使用set的方式或构造时候注入。比如在UserModel内部放一个属性db存储DB的实例,并为DB定义一个接口DBInterface,并在UserModel的构造中要求传入一个DBInterface的实例赎给db属性。这样getAllUser()就可能是这样return $this->db->query(“select *…”)。
这样做有什么好处?比如换了数据库,只需要新建一个DB2类实现DBInterface,注入的时候注入DB2的实例即可,UserModel内部的代码是不需要动的。若是原来的方式,UserModel内部多处都是直接new DB(),就得一一找出来改为new DB2(),很麻烦。
这里也是很好的参考:http://www.digpage.com/di.html
%11%cc%25