很多時候我聽說避免靜態類因爲they will insert dependencies that will render your code unusable in other projects, and will not allow to unit test it。PHP避免靜態類避免依賴關係,但我需要全局遍地使用
比方說,我們有一個典型的class DB
訪問數據庫,如果這樣的類是static
,我們可以把它叫做無論在我們的代碼:
DB::execQuery(...);
但是這創造依賴關係,因此,讓DB類NOT靜態的,在這種情況下,我們有地方在我們的代碼:
$db = new DB();
,然後我們就可以在我們的代碼中調用
$db->execQuery(...);
但現在每次使用$db
一個function
我們需要內部時,先聲明它這樣
global $db;
有沒有辦法來解決這個?
的一種方法是注入在使用它的類$db
對象,但我會在所有使用它的類注入它,這是ridicolous,靜態類會更快與少的工作代碼寫入。我錯過了什麼?
http://misko.hevery.com/2008/08/17/singletons-are-pathological-liars/ –