亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用PHP怎么實現依賴注入模式

發布時間:2021-05-25 18:23:20 來源:億速云 閱讀:182 作者:Leah 欄目:開發技術

使用PHP怎么實現依賴注入模式?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

用法

DatabaseConfiguration 被注入 DatabaseConnection 并獲取所需的 $config 。如果沒有依賴注入模式, 配置將直接創建 DatabaseConnection 。這對測試和擴展來說很不好。

例子

Doctrine2 ORM 使用依賴注入。 例如,注入到 Connection 對象的配置。 對于測試而言, 可以輕松的創建可擴展的模擬數據并注入到 Connection 對象中。

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

UML 圖

使用PHP怎么實現依賴注入模式

代碼DatabaseConfiguration.php

<?php

namespace DesignPatterns\Structural\DependencyInjection;

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

<?php

namespace DesignPatterns\Structural\DependencyInjection;

class DatabaseConnection
{
    /**
     * @var DatabaseConfiguration
     */
    private $configuration;

    /**
     * @param DatabaseConfiguration $config
     */
    public function __construct(DatabaseConfiguration $config)
    {
        $this->configuration = $config;
    }

    public function getDsn(): string
    {
        // 這僅僅是演示,而不是一個真正的  DSN
        // 注意,這里只使用了注入的配置。 所以,
        // 這里是關鍵的分離關注點。

        return sprintf(
            '%s:%s@%s:%d',
            $this->configuration->getUsername(),
            $this->configuration->getPassword(),
            $this->configuration->getHost(),
            $this->configuration->getPort()
        );
    }
}
?>

測試Tests/DependencyInjectionTest.php

<?php

namespace DesignPatterns\Structural\DependencyInjection\Tests;

use DesignPatterns\Structural\DependencyInjection\DatabaseConfiguration;
use DesignPatterns\Structural\DependencyInjection\DatabaseConnection;
use PHPUnit\Framework\TestCase;

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的框架有哪些

php的框架:1、Laravel,Laravel是一款免費并且開源的PHP應用框架。2、Phalcon,Phalcon是運行速度最快的一個PHP框架。3、Symfony,Symfony是一款為Web項目準備的PHP框架。4、Yii,Yii是一款快速、安全和專業的PHP框架。5、CodeIgniter,CodeIgniter是一款非常敏捷的開源PHP框架。6、CakePHP,CakePHP是一款老牌的PHP框架。7.Kohana,Kohana是一款敏捷但是功能強大的PHP框架。

關于使用PHP怎么實現依賴注入模式問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

鄂托克旗| 深水埗区| 白河县| 达州市| 巴东县| 道孚县| 军事| 舟曲县| 东方市| 金华市| 古田县| 嘉义市| 上栗县| 玉溪市| 南阳市| 揭东县| 河池市| 兴和县| 连南| 文水县| 汪清县| 江口县| 富平县| 泊头市| 诸暨市| 松原市| 平和县| 龙岩市| 连云港市| 嫩江县| 商都县| 蓝田县| 雷州市| 新巴尔虎左旗| 阿拉善右旗| 林西县| 贞丰县| 韶山市| 观塘区| 商水县| 左权县|