?
Dokumen ini menggunakan Manual laman web PHP Cina Lepaskan
我們可以用一個簡單的例子來說明依賴注入的概念
下面的代碼中有一個 Database 的類,它需要一個適配器來與數(shù)據庫交互。我們在構造函數(shù)里實例化了適配器,從而產生了耦合。這會使測試變得很困難,而且 Database 類和適配器耦合的很緊密。
<?php namespace Database; class Database { protected $adapter; public function __construct(){ $this->adapter = new MySqlAdapter; } } class MysqlAdapter { }
這段代碼可以用依賴注入重構,從而解耦
<?php namespace Database; class Database { protected $adapter; public function __construct(MySqlAdapter $adapter){ $this->adapter = $adapter; } } class MysqlAdapter { }
現(xiàn)在,我們以參數(shù)的形式向 Database 類傳遞其依賴的對象,而不是讓它自己產生所依賴的對象。我們甚至可以創(chuàng)建一個方法(method),讓這個方法可以接受依賴對象作為參數(shù)并在內部設置依賴關系,或者,如果 $adapter 屬性本身是 public 的,我們可以直接給它賦值。