>백엔드 개발 >PHP 튜토리얼 >PHP5에서 싱글톤 디자인 패턴을 구현하는 방법은 무엇입니까?

PHP5에서 싱글톤 디자인 패턴을 구현하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-13 03:08:08613검색

How to Implement the Singleton Design Pattern in PHP5?

PHP5의 싱글턴 디자인 패턴

PHP5에서 싱글턴 디자인 패턴을 구현하려면 방법에 관계없이 하나의 인스턴스만 가질 수 있는 클래스를 생성해야 합니다. 여러 번 인스턴스화되었습니다. 이는 정적 변수를 사용하여 단일 인스턴스를 저장하고 복제 또는 역직렬화를 방지함으로써 달성됩니다.

다음은 PHP5에서 싱글톤 클래스를 생성하는 방법에 대한 예입니다.

final class UserFactory
{
    private static $inst = null;

    // Prevent cloning and de-serializing
    private function __clone(){}
    private function __wakeup(){}

    /**
     * Call this method to get singleton
     *
     * @return UserFactory
     */
    public static function Instance()
    {
        if self::$inst === null) {
            self::$inst = new UserFactory();
        }
        return self::$inst;
    }

    /**
     * Private ctor so nobody else can instantiate it
     *
     */
    private function __construct()
    {

    }
}

이것은 구현에서는 정적 변수 $inst를 사용하여 UserFactory 클래스의 단일 인스턴스를 저장합니다. Instance() 메서드는 싱글톤 getter 역할을 합니다. $inst가 null이면 새 인스턴스가 생성되어 $inst에 할당됩니다.

이 싱글톤 클래스를 사용하려면 Instance() 메서드를 호출하여 단일 인스턴스를 얻으세요.

$fact = UserFactory::Instance();
$fact2 = UserFactory::Instance();

$fact와 $fact2를 비교하면 true가 반환되어 동일한 인스턴스임을 확인할 수 있습니다.

그러나 새 인스턴스를 인스턴스화하려고 하면 new UserFactory()를 직접 사용하는 UserFactory 객체는 생성자가 비공개로 설정되므로 오류가 발생합니다. UserFactory 클래스의 인스턴스를 얻는 유일한 방법은 Instance() 메서드를 사용하는 것입니다.

위 내용은 PHP5에서 싱글톤 디자인 패턴을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.