亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術(shù)文章
文章詳情頁

詳解PHP設(shè)計(jì)模式之依賴注入模式

瀏覽:6日期:2022-09-07 13:27:41
目的

實(shí)現(xiàn)了松耦合的軟件架構(gòu),可得到更好的測(cè)試,管理和擴(kuò)展的代碼

用法

DatabaseConfiguration 被注入 DatabaseConnection 并獲取所需的 $config 。如果沒有依賴注入模式, 配置將直接創(chuàng)建 DatabaseConnection 。這對(duì)測(cè)試和擴(kuò)展來說很不好。

例子

Doctrine2 ORM 使用依賴注入。 例如,注入到 Connection 對(duì)象的配置。 對(duì)于測(cè)試而言, 可以輕松的創(chuàng)建可擴(kuò)展的模擬數(shù)據(jù)并注入到 Connection 對(duì)象中。

Symfony 和 Zend Framework 2 已經(jīng)有了依賴注入的容器。他們通過配置的數(shù)組來創(chuàng)建對(duì)象,并在需要的地方注入 (在控制器中)。

UML 圖

詳解PHP設(shè)計(jì)模式之依賴注入模式

代碼DatabaseConfiguration.php

<?phpnamespace DesignPatternsStructuralDependencyInjection;class DatabaseConfiguration{ /** * @var string */ private $host; /** * @var int */ private $port; /** * @var string */ private $username; /** * @var string */ private $password; public function __construct(string $host, int $port, string $username, string $password) {$this->host = $host;$this->port = $port;$this->username = $username;$this->password = $password; } public function getHost(): string {return $this->host; } public function getPort(): int {return $this->port; } public function getUsername(): string {return $this->username; } public function getPassword(): string {return $this->password; }}?>

DatabaseConnection.php

<?phpnamespace DesignPatternsStructuralDependencyInjection;class DatabaseConnection{ /** * @var DatabaseConfiguration */ private $configuration; /** * @param DatabaseConfiguration $config */ public function __construct(DatabaseConfiguration $config) {$this->configuration = $config; } public function getDsn(): string {// 這僅僅是演示,而不是一個(gè)真正的 DSN// 注意,這里只使用了注入的配置。 所以,// 這里是關(guān)鍵的分離關(guān)注點(diǎn)。return sprintf( ’%s:%s@%s:%d’, $this->configuration->getUsername(), $this->configuration->getPassword(), $this->configuration->getHost(), $this->configuration->getPort()); }}?>

測(cè)試Tests/DependencyInjectionTest.php

<?phpnamespace DesignPatternsStructuralDependencyInjectionTests;use DesignPatternsStructuralDependencyInjectionDatabaseConfiguration;use DesignPatternsStructuralDependencyInjectionDatabaseConnection;use PHPUnitFrameworkTestCase;class DependencyInjectionTest extends TestCase{ public function testDependencyInjection() {$config = new DatabaseConfiguration(’localhost’, 3306, ’domnikl’, ’1234’);$connection = new DatabaseConnection($config);$this->assertEquals(’domnikl:1234@localhost:3306’, $connection->getDsn()); }}?>

以上就是詳解PHP設(shè)計(jì)模式之依賴注入模式的詳細(xì)內(nèi)容,更多關(guān)于PHP設(shè)計(jì)模式之依賴注入模式的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 久久成人免费播放网站 | 久久久久国产一级毛片高清片 | 国产成人综合网在线播放 | 欧美大尺度免费一级特黄 | 韩国毛片免费播放 | 成人性色大片 | 久久久欧美综合久久久久 | 久久毛片网 | 中文字幕 亚洲 一区二区三区 | 久草最新在线 | 一级视频免费观看 | 国产91免费在线 | 日韩欧美视频在线一区二区 | 日本二区免费一片黄2019 | 99久久精品6在线播放 | 99视频在线看 | 日韩欧美印度一级毛片 | 俄罗斯三级毛片 | 欧美xxx国产xxx| 日韩一区二区三区在线免费观看 | 一级一级一片免费 | 国产视频在线免费观看 | 欧美精品一区视频 | 特级淫片国产免费高清视频 | 国产99视频精品一区 | 中国一级毛片 | 成人的天堂 | a级国产乱理伦片在线 | 114一级毛片免费 | 国产精品欧美一区二区三区 | 欧美一级特黄aaaaaa在线看片 | 亚洲欧美日韩国产专区一区 | 武松大战潘金莲三级在线 | 国产高清在线不卡 | 日韩视频在线观看一区 | 在线日本看片免费人成视久网 | 欧美一级视频高清片 | 在线播放人成午夜免费视频 | 黄 色 成 年 人小说 | 国产高清免费在线 | 欧美精品一级 |