亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄 搜尋
前言 入門(mén)指南 代碼風(fēng)格指南 語(yǔ)言亮點(diǎn) 編程范式 命名空間 PHP標(biāo)準(zhǔn)庫(kù) 命令行接口 Xdebug 依賴(lài)管理 使用當(dāng)前穩(wěn)定版本的 PHP (7.1) Mac 系統(tǒng)安裝 PHP Windows 系統(tǒng)安裝 PHP 內(nèi)置的 web 服務(wù)器 Composer 與 Packagist PEAR 介紹 開(kāi)發(fā)實(shí)踐 基礎(chǔ)知識(shí) 日期和時(shí)間 設(shè)計(jì)模式 使用 UTF-8 編碼 國(guó)際化 (i18n) 與本地化 (l10n) 一般的實(shí)現(xiàn)方法 Gettext 依賴(lài)注入 基本概念 復(fù)雜的問(wèn)題 容器 數(shù)據(jù)庫(kù) MySQL 擴(kuò)展 PDO 擴(kuò)展 數(shù)據(jù)庫(kù)交互 數(shù)據(jù)庫(kù)抽象層 使用模板 好處 原生 PHP 模板 編譯型模板 錯(cuò)誤與異常 錯(cuò)誤 異常 安全 Web 應(yīng)用程序安全 密碼哈希 數(shù)據(jù)過(guò)濾 配置文件 注冊(cè)全局變量 錯(cuò)誤報(bào)告 測(cè)試 測(cè)試驅(qū)動(dòng)開(kāi)發(fā) 其他測(cè)試工具 服務(wù)器與部署 虛擬或?qū)S梅?wù)器 共享主機(jī) 構(gòu)建及部署應(yīng)用 虛擬化技術(shù) Vagrant 簡(jiǎn)介 Docker 簡(jiǎn)介 緩存 Opcode 緩存 對(duì)象緩存 文檔撰寫(xiě) PHPDoc 資源 PHP 官方 值得關(guān)注的大牛 指導(dǎo) PHP 的 Paas 提供商 框架 組件 其他有用的資源 書(shū)籍 社區(qū) PHP 用戶組 PHP 會(huì)議 ElePHPants
文字

我們可以用一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明依賴(lài)注入的概念

下面的代碼中有一個(gè) Database 的類(lèi),它需要一個(gè)適配器來(lái)與數(shù)據(jù)庫(kù)交互。我們?cè)跇?gòu)造函數(shù)里實(shí)例化了適配器,從而產(chǎn)生了耦合。這會(huì)使測(cè)試變得很困難,而且 Database 類(lèi)和適配器耦合的很緊密。

<?php 
namespace Database; 
class Database {     
protected $adapter;     
public function __construct(){
     $this->adapter = new MySqlAdapter;     
     } 
 } 
 class MysqlAdapter {
 }

這段代碼可以用依賴(lài)注入重構(gòu),從而解耦

<?php 
namespace Database; 
class Database {     
protected $adapter;     
public function __construct(MySqlAdapter $adapter){         
$this->adapter = $adapter;     
} 
} 
class MysqlAdapter {
}

現(xiàn)在,我們以參數(shù)的形式向 Database 類(lèi)傳遞其依賴(lài)的對(duì)象,而不是讓它自己產(chǎn)生所依賴(lài)的對(duì)象。我們甚至可以創(chuàng)建一個(gè)方法(method),讓這個(gè)方法可以接受依賴(lài)對(duì)象作為參數(shù)并在內(nèi)部設(shè)置依賴(lài)關(guān)系,或者,如果 $adapter 屬性本身是 public 的,我們可以直接給它賦值。


上一篇: 下一篇: