개발공부/PHP

PHP 싱글톤 패턴

bzerome240 2023. 3. 19. 15:43

 

어플리케이션에서 하나의 객체 인스턴스를 가진다.

단점: 코트 재사용을 제한하고 유닛 테스트를 복잡하게 만드는 등 안티패턴으로도 간주한다.

 

ex) DB connector, Logger 등

class Singleton {
    private static $instances = [];
    
	public static function getInstance() {
        $cls = static::class;
        if (!isset(self::$instances[$cls])) {
            self::$instances[$cls] = new static();
        }

        return self::$instances[$cls];
    }
}

function clientCode() {
    $s1 = Singleton::getInstance();
    $s2 = Singleton::getInstance();
    if ($s1 === $s2) {
        echo "Singleton works, both variables contain the same instance.";
    } else {
        echo "Singleton failed, variables contain different instances.";
    }
}

clientCode();

 


 

참고

 

 

1.8. 싱글턴 (Singleton) — DesignPatternsPHP 1.0 documentation

Docs » 1. 생성 패턴 (Creational) » 1.8. 싱글턴 (Singleton) Edit on GitHub 안티패턴이 될 수 있기 때문에 사용에 고려해 보아야 합니다! 더 나은 테스트가능성(Testablity)과 유지가능성(Maintainability)을 위해서

designpatternsphpko.readthedocs.io

 

 

PHP로 작성된 싱글턴 / 디자인 패턴들

사용 사례들: 많은 개발자는 싱클턴을 안티패턴으로 간주합니다. 그래서 PHP 코드에서의 사용이 감소하고 있습니다. 식별: 싱글턴은 같은 캐싱 된 객체를 반환하는 정적 생성 메서드로 식별될 수

refactoring.guru

 

728x90
반응형