라이브러리

[PHP] SplSubject::attach - SplObserver 연결




SplSubject 클래스와 attach 메소드


PHP의 SplSubject 클래스는 Observer 패턴을 구현하기 위한 클래스입니다. Observer 패턴은 객체 간의 의존성을 줄이고, 객체의 상태 변화를 관찰할 수 있도록 하는 디자인 패턴입니다.

SplSubject 클래스는 다음과 같은 특징을 가지고 있습니다.

* Observer 패턴을 구현하기 위한 클래스입니다.
* Observer 객체를 등록하고, 등록된 Observer 객체에게 상태 변화를 알릴 수 있습니다.

attach 메소드는 Observer 객체를 등록하는 메소드입니다. 이 메소드는 Observer 객체를 등록하고, 등록된 Observer 객체에게 상태 변화를 알릴 수 있습니다.

attach 메소드의 사용 예제


다음은 attach 메소드의 사용 예제입니다.

#hostingforum.kr
php

class Subject extends SplSubject

{

    public function attach(Observer $observer)

    {

        $this->attach($observer);

    }



    public function notify()

    {

        $this->notify();

    }

}



class Observer implements ObserverInterface

{

    public function update($subject)

    {

        echo "Observer: Notified
";

    }

}



interface ObserverInterface

{

    public function update($subject);

}



$subject = new Subject();

$observer = new Observer();



$subject->attach($observer);



$subject->notify(); // Observer: Notified



위의 예제에서, Subject 클래스는 SplSubject 클래스를 상속하고, attach 메소드를 오버라이딩합니다. Observer 클래스는 ObserverInterface를 implements하고, update 메소드를 구현합니다.

Subject 클래스의 attach 메소드는 Observer 객체를 등록하고, 등록된 Observer 객체에게 상태 변화를 알립니다. notify 메소드는 등록된 Observer 객체에게 상태 변화를 알립니다.

attach 메소드의 사용 예제 (실제 사용 예제)


다음은 attach 메소드의 사용 예제입니다.

#hostingforum.kr
php

class WeatherStation extends SplSubject

{

    private $temperature;

    private $humidity;



    public function setTemperature($temperature)

    {

        $this->temperature = $temperature;

        $this->notify();

    }



    public function setHumidity($humidity)

    {

        $this->humidity = $humidity;

        $this->notify();

    }

}



class WeatherObserver implements ObserverInterface

{

    public function update($subject)

    {

        if ($subject instanceof WeatherStation) {

            $weatherStation = $subject;

            echo "Temperature: " . $weatherStation->temperature . "
";

            echo "Humidity: " . $weatherStation->humidity . "
";

        }

    }

}



$weatherStation = new WeatherStation();

$weatherObserver = new WeatherObserver();



$weatherStation->attach($weatherObserver);



$weatherStation->setTemperature(25);

$weatherStation->setHumidity(60); // Temperature: 25 Humidity: 60



위의 예제에서, WeatherStation 클래스는 SplSubject 클래스를 상속하고, setTemperature 메소드와 setHumidity 메소드를 구현합니다. WeatherObserver 클래스는 ObserverInterface를 implements하고, update 메소드를 구현합니다.

WeatherStation 클래스의 setTemperature 메소드와 setHumidity 메소드는 등록된 Observer 객체에게 상태 변화를 알립니다.

결론


attach 메소드는 Observer 패턴을 구현하기 위한 메소드입니다. 이 메소드는 Observer 객체를 등록하고, 등록된 Observer 객체에게 상태 변화를 알릴 수 있습니다. 위의 예제를 통해 attach 메소드의 사용 방법을 이해할 수 있습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 204 페이지

검색

게시물 검색