栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我如何在简单的php函数中使用“依赖注入”,我应该打扰吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我如何在简单的php函数中使用“依赖注入”,我应该打扰吗?

依赖注入是“我的构造函数中还有更多参数”的一个大词。

这是您在不喜欢Globals的可怕Singleton浪潮之前所做的事情:

<?phpclass User {    private $_db;    function __construct($db) {        $this->_db = $db;    }}$db   = new Db();$user = new User($db);

现在,诀窍是使用单个类来管理您的依赖项,如下所示:

class DependencyContainer {    private _instances = array();    private _params = array();    public function __construct($params)    {        $this->_params = $params;    }    public function getDb()    {        if (empty($this->_instances['db'])  || !is_a($this->_instances['db'], 'PDO')        ) { $this->_instances['db'] = new PDO(     $this->_params['dsn'],     $this->_params['dbUser'],      $this->_params['dbPwd'] );        }        return $this->_instances['db'];    }}class User{    private $_db;    public function __construct(DependencyContainer $di)    {         $this->_db = $di->getDb();    }}$dependencies = new DependencyContainer($someParams);$user = new User($dependencies);

您必须认为自己只是另一类,而且更加复杂。但是,您的用户类可能需要一些信息来记录消息,例如许多其他类。只需将getMessageHandler函数添加到您的依赖项容器中,并将一些添加

$this->_messages= $di->getMessageHandler()
到您的用户类中。其余代码没有任何变化。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/573357.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号