본문 바로가기
개발공부/PHP

PHP 싱글톤 패턴

by bzerome240 2023. 3. 19.

 

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

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

 

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
반응형

'개발공부 > PHP' 카테고리의 다른 글

PHP call by reference  (0) 2024.03.02
PHP 단점 - connection pool  (0) 2023.06.07
[공유] Clean Code PHP 한글판  (0) 2023.05.16
[PHP] redis 라이브러리 - Predis 알아보기  (0) 2022.12.30
[PHP] mysql_num_rows VS mysql_affected_rows  (0) 2020.04.27

댓글