2009-12-01 93 views
3

我想使用我創建的數據庫單身人士,在幾個類的方法。在每個方法中單獨實例化單例還是通過__constructor()實例化單例並在每個方法中從變量訪問它更合適?在PHP中使用單身人士

謝謝。

+0

如果它是一個單身那麼它不應該是能夠每次創建新實例。 – scotchi 2009-12-01 22:40:28

回答

0

單身是否可能在每次實例化課程時使用?或者它只是偶爾用於不總是被調用的方法?如果是前者,在構造函數中執行它可能更直接;如果是後者,那麼效率只會建議在每種方法中按需實例化(這是假定初始單例創建的開銷很大 - 如果不是,只需在構造函數中執行並省去一些麻煩)。

3

考慮到它是一個單例,結果將是相同的:只有一個DB對象實例,並且它將始終是相同的。

因此,兩種解決方案都可以工作,併產生相同的結果;至少,如果每次創建類的實例時都使用DB類 - 當然,性能差異可能可以忽略不計。


不過,隨着越來越構造函數中的單一實例和其他方法使用一個類變量的解決方案將會有一個優點:你的方法不會依靠這個單,但只在一個類變量.. 。

...這意味着Dependency Injection將是更容易(你只需要修改你的__construct方法,而不是每一個類的方法)如果你想使用它第一天 - 例如,以「模擬」您的數據庫類,以進行自動化測試。

欲瞭解更多信息,你可以在這個博客帖子看看:What is Dependency Injection?

+0

謝謝你這麼詳細的回答:) – bennn 2009-12-01 22:40:34

+0

不客氣:-)玩得開心! – 2009-12-01 23:08:10