내가 어떤 방향으로 가야할지 모르겠다. 지금까지 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 클래스에서 사용할 수 있습니다. 이것이 좋은 방향일까요? 아니면 공장 디자인이 더 좋을까요?
지금까지는 그런 경우 전역을 사용했지만 프로젝트가 급속히 성장하면서 피할 수 있었을 것입니다.
안녕하세요, 디자인 패턴의 작동 방식을 알고 있지만, 어떤 방식 으로든 언제 어디서나 사용할 수있는 Context 클래스를 사용하는 경우 어떤 접근 방식이 가장 좋을지에 대해 더 많은 관심을 가졌습니다. :) 특별한 나쁜 습관으로 간주 되나요? 더 나은 방법을 찾을 수없는 것 같습니다. – user3370402
@ user3370402 - 어디서나 PDO 개체의 단일 인스턴스를 사용할 수 있도록하려면 싱글 톤 패턴이 좋을 것입니다. 대안을 시도하고 싶다면 레지스트리 패턴을 사용하십시오.하지만 Simpleton은 구현/이해가 훨씬 쉬울 것입니다. 나는 싱글 톤에 대해 혼합 된 감정을 가지고 있지만 널리 사용되며 구현하기가 매우 쉽다. 그래서 문제가 해결된다면 그것을 가져라. –