本文實(shí)例講述了PHP經(jīng)典設(shè)計(jì)模式之依賴(lài)注入定義與用法。分享給大家供大家參考,具體如下:
依賴(lài)注入的實(shí)質(zhì)就是把一個(gè)類(lèi)不可能更換的部分和可更換的部分分離開(kāi)來(lái),通過(guò)注入的方式來(lái)使用,從而達(dá)到解耦的目的。
一個(gè)數(shù)據(jù)庫(kù)連接類(lèi):
class Mysql{ private $host; private $prot; private $username; private $password; private $db_name; // 構(gòu)造方法 public function __construct(){ $this->host = '127.0.0.1'; $this->port = 22; $this->username = 'root'; $this->password = ''; $this->db_name = 'my_db'; } // 連接 public function connect(){ return mysqli_connect($this->host,$this->username,$this->password,$this->db_name,$this->port); } }
使用這個(gè)類(lèi):
$db = new Mysql(); $db->connect();
通常數(shù)據(jù)庫(kù)連接類(lèi)應(yīng)該設(shè)計(jì)為單列,這里先不要搞復(fù)雜了。
依賴(lài)注入
顯然,數(shù)據(jù)庫(kù)的配置是可以更換的部分,因此我們需要先把它拎出來(lái):
class MysqlConfiguration{ private $host; private $prot; private $username; private $password; private $db_name; public function __construct($host,$port,$username,$password,$db_name){ $this->host = $host; $this->port = $port; $this->username = $username; $this->password = $password; $this->db_name = $db_name; } public function getHost(){ return $this->host; } public function getPort(){ return $this->port(); } public function getUsername(){ return $this->username; } public function getPassword(){ return $this->password; } public function getDbName(){ return $this->db_name; } }
然后不可替換的部分這樣:
class Mysql{ private $configuration; public function __construct($config){ $this->configuration = $config; } // 連接 public function connect(){ return mysqli_connect($this->configuration->getHost(),$this->configuration->getUsername(),$this->configuration->getPassword(),$this->configuration->getDbName(),$this->configuration->getPort()); } }
這樣就完成了配置文件和連接邏輯的分離。
使用
$config = new MysqlConfiguration('127.0.0.1','root','password','my_db',22); // $config是注入Mysql的,這就是所謂的依賴(lài)注入 $db = new Mysql($config); $db->connect();
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
標(biāo)簽:巴彥淖爾 重慶 臨沂 十堰 衡陽(yáng) 鷹潭 麗江 銅陵
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP經(jīng)典設(shè)計(jì)模式之依賴(lài)注入定義與用法詳解》,本文關(guān)鍵詞 PHP,經(jīng)典,設(shè)計(jì)模式,之,依賴(lài),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。