Vorwort
Lassen Sie uns abschließend über dieses berühmte Designprinzip sprechen. Tatsächlich ist es einfacher als andere Designmuster.
Das Wesen der Abhängigkeitsinjektion besteht darin, die unersetzlichen Teile einer Klasse von den ersetzbaren Teilen zu trennen und sie durch Injektion zu verwenden, wodurch der Zweck der Entkopplung erreicht wird.
Hier ist ein Beispiel für einen Datenbanklink. Ich hoffe, jeder versteht, dass
class Mysql{ private $host; private $port; private $username; private $password; private $db_name; 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); } }
normalerweise mit
$db = new Mysql(); $con = $db->connect();
Da es sich um einen Singleton handelt, machen wir es hier nicht kompliziert.
Offensichtlich ist die Datenbankkonfiguration ein austauschbarer Teil, daher müssen wir sie entfernen.
class MysqlConfiguration { private $host; private $port; private $username; private $password; private $db_name; public function construct(string $host, int $port, string $username, string $password,string $db_name) { $this->host = $host; $this->port = $port; $this->username = $username; $this->password = $password; $this->db_name = $db_name; } 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; } public function getDbName(): string { return $this->db_name; } }
Dann sieht der nicht ersetzbare Teil so aus:
class Mysql { private $configuration; public function construct(DatabaseConfiguration $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()); } }
Damit ist die Trennung von Konfigurationsdatei und Verbindungslogik abgeschlossen.
$config = new MysqlConfiguration('127.0.0.1','root','','my_db',22); $db = new Mysql($config); $con = $db->connect();
$config, um MySQL zu injizieren, was als Abhängigkeitsinjektion bezeichnet wird.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des PHP-Entwurfsmusters zur Verwendung der Abhängigkeitsinjektion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!