【发布时间】:2014-05-10 09:44:31
【问题描述】:
我发现自己处于不确定自己应该走哪条路的境地。到目前为止,我正在使用依赖注入,我将 PDO 对象作为依赖传递给。
这很好用,但现在我需要一个 Context 类,例如保存当前用户的信息。可能是这样的:
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 类中使用它。这是一个很好的方法吗?还是工厂设计会更好?
到目前为止,我在这种情况下使用 global,但随着项目的快速发展,我可能希望避免使用。
【问题讨论】:
标签: php dependencies singleton mixing