实现了松耦合的软件架构,可得到更好的测试,管理和扩展的代码
databaconfiguration 被注入 databaconnection 并获取所需的 $config 。如果没有依赖注入模式, 配置将直接创建 databaconnection 。这对测试和扩展来说很不好。
doctrine2 orm 使用依赖注入。 例如,注入到 connection 对象的配置。 对于测试教师的幸福感而言, 可以轻松的创建可扩展的模拟数据并注入到 connection 对象中。
symfony 和 zend framework 2 已经有了依赖注入的容器。他们通过配置的数组来创建对象,并在需要的地方注入 (在控制器中)。
代码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 条评论) |