我發現自己處於一種不確定我應該走哪條路的情況。到目前爲止,我使用依賴注入來傳遞PDO對象作爲依賴項。PHP混合單身人士依賴注射
這工作得很好,但現在我需要一個上下文類,例如將持有當前用戶的信息。這可能是這樣的:
class Context
{
private $Pdo;
function __construct(PDO $Pdo) {
$this->Pdo = $Pdo;
}
function CurrentUser(){
if ($this->CurrentUser == null){
// get user logic
$this->CurrentUser = User;
}
return $this->CurrentUser;
}
}
所以每次我想獲得當前用戶,我需要做這樣的事情:
$Context = new Context($Pdo);
$User = $Context->CurrentUser();
我希望能夠用這個項目中的任何地方,但PDO不會傳遞給每個方法。
我可以創建一個單例類來獲取我需要的任何地方的PDO對象,並在我的Context類中使用它。這是一個很好的方法嗎?或者工廠設計會更好?
到目前爲止,我在這種情況下使用全球性,但我可能想避免項目增長迅速。
嘿,感謝您的輸入,但是我知道設計模式是如何工作的,我更感興趣的是哪種方法最適合在具有上下文類的情況下,隨時隨地可用。被認爲是一種特別糟糕的做法?我似乎無法找出一個更好的方法.. – user3370402
@ user3370402 - 如果您希望在任何地方都可以使用您的PDO對象的單個實例,那麼Singleton模式應該沒問題。如果你想嘗試一個替代方案,請使用註冊表模式......但是我的Simpleton將更容易實現/理解。我對單身人士有着複雜的感受,但是它們被廣泛使用並且*很容易實現,所以如果它解決了你的問題,就去做吧。 –