首页 > 作文

详解PHP设计模式之依赖注入模式

更新时间:2023-04-09 03:06:29 阅读: 评论:0

目的

实现了松耦合的软件架构,可得到更好的测试,管理和扩展的代码

用法

databaconfiguration 被注入 databaconnection 并获取所需的 $config 。如果没有依赖注入模式, 配置将直接创建 databaconnection 。这对测试和扩展来说很不好。

例子

doctrine2 orm 使用依赖注入。 例如,注入到 connection 对象的配置。 对于测试教师的幸福感而言, 可以轻松的创建可扩展的模拟数据并注入到 connection 对象中。

symfony 和 zend framework 2 已经有了依赖注入的容器。他们通过配置的数组来创建对象,并在需要的地方注入 (在控制器中)。

uml 图

代码databaconfiguration.php

<?phpnamespace designpatterns\structural\dependencyinjection;class databaconfiguration{    /**     * @var string     */    private $host;    /**     * @var int     */    private $port;    /**     * @var string     */    private $urname;    /**     * @var string     */    private $password;    public function __construct(string $host, int $port, string $urname, string $password)    {        $this->host = $host;        $this->port = $port;        $this->urname = $urname;        $this->password = $password;    }    public function gethost(): string    {        return $this->host;    }    public function getport(): int    {        return $this->port;    }    public function geturname(): string    {        return $this->urname;    }    public function getpassword(): string    {        return $this->password;    }}?>

databaconnection.php

<?phpnamespace designpatterns\structural\dependencyinjection;class databaconnection{    /**     * @var databaconfiguration     */    private $configuration;    /**     * @param databaconfiguration $config     */    public function __construct(databaconfiguration $config)    {        $this->configuration = $config;    }    public function getdsn(): string    {        // 这仅仅是演示,而不是一个真正的  dsn        // 注意,这里只使用了注入的配置。 所以,        // 这里是关键的分离关注点。        return sprintf(            '%s:%s11寸笔记本推荐@%s:%d',            $this->configura德玛西亚是什么意思tion->geturname(),            $this->configuration->getpassword(),   蚌埠学院是几本         $this->configuration->gethost(),            $this->configuration->getport()        );    }}?>

测试tests/dependencyinjectiontest.php

<?phpnamespace designpatterns\structural\dependencyinjection\tests;u designpatterns\structural\dependencyinjection\databaconfiguration;u designpatterns\structural\dependencyinjection\databaconnection;u phpunit\framework\testca;class dependencyinjectiontest extends testca{    public function testdependencyinjection()    {        $config = new databaconfiguration('localh爱情面前谁怕谁ost', 3306, 'domnikl', '1234');        $connection = new databaconnection($config);        $this->asrtequals('domnikl:1234@localhost:3306', $connection->getdsn());    }}?>

以上就是详解php设计模式之依赖注入模式的详细内容,更多关于php设计模式之依赖注入模式的资料请关注www.887551.com其它相关文章!

本文发布于:2023-04-09 03:06:28,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/5354b52a0f8cbade2f77684e751e673e.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:详解PHP设计模式之依赖注入模式.doc

本文 PDF 下载地址:详解PHP设计模式之依赖注入模式.pdf

标签:模式   测试   蚌埠   是一个
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图