라이브러리

[PHP] Event::signal - 신호 이벤트 객체를 구성합니다.




PHP의 Event::signal


PHP의 Event::signal은 PHP 8.0 버전부터 지원하는 기능으로, 이벤트 기반 프로그래밍을 지원합니다. Event::signal은 이벤트를 발생시키고, 이벤트를 처리하는 핸들러를 등록할 수 있는 기능을 제공합니다.

Event::signal 사용법


Event::signal을 사용하려면 먼저 Event 클래스를 사용할 수 있도록 PHP를 구성해야 합니다. PHP 8.0 버전 이상에서 Event 클래스를 사용할 수 있습니다.

# Event::signal 등록


Event::signal을 등록하려면 `Event::signal` 메소드를 사용합니다. 이 메소드는 이벤트 이름과 이벤트 핸들러를 받습니다.

#hostingforum.kr
php

use SymfonyComponentEventDispatcherEventDispatcher;

use SymfonyComponentEventDispatcherEvent;



class MyEvent extends Event

{

    public const NAME = 'my_event';



    public function __construct()

    {

        parent::__construct(self::NAME);

    }

}



$dispatcher = new EventDispatcher();



$dispatcher->addListener(MyEvent::NAME, function (MyEvent $event) {

    echo "이벤트 발생!
";

});



$event = new MyEvent();

$dispatcher->dispatch($event);



# Event::signal 발생


Event::signal을 발생시키려면 `dispatch` 메소드를 사용합니다. 이 메소드는 이벤트 이름과 이벤트 인자를 받습니다.

#hostingforum.kr
php

use SymfonyComponentEventDispatcherEventDispatcher;

use SymfonyComponentEventDispatcherEvent;



class MyEvent extends Event

{

    public const NAME = 'my_event';



    public function __construct($data)

    {

        parent::__construct(self::NAME);

        $this->data = $data;

    }



    public function getData()

    {

        return $this->data;

    }

}



$dispatcher = new EventDispatcher();



$dispatcher->addListener(MyEvent::NAME, function (MyEvent $event) {

    echo "이벤트 발생!
";

    echo "이벤트 데이터: " . $event->getData() . "
";

});



$event = new MyEvent("Hello, World!");

$dispatcher->dispatch($event);



# Event::signal 제거


Event::signal을 제거하려면 `removeListener` 메소드를 사용합니다. 이 메소드는 이벤트 이름과 이벤트 핸들러를 받습니다.

#hostingforum.kr
php

use SymfonyComponentEventDispatcherEventDispatcher;

use SymfonyComponentEventDispatcherEvent;



class MyEvent extends Event

{

    public const NAME = 'my_event';



    public function __construct()

    {

        parent::__construct(self::NAME);

    }

}



$dispatcher = new EventDispatcher();



$listener = function (MyEvent $event) {

    echo "이벤트 발생!
";

};



$dispatcher->addListener(MyEvent::NAME, $listener);



$dispatcher->removeListener(MyEvent::NAME, $listener);



$event = new MyEvent();

$dispatcher->dispatch($event);



예제: 이벤트 기반 로그 시스템


Event::signal을 사용하여 이벤트 기반 로그 시스템을 구현할 수 있습니다.

#hostingforum.kr
php

use SymfonyComponentEventDispatcherEventDispatcher;

use SymfonyComponentEventDispatcherEvent;



class LogEvent extends Event

{

    public const NAME = 'log_event';



    public function __construct($message)

    {

        parent::__construct(self::NAME);

        $this->message = $message;

    }



    public function getMessage()

    {

        return $this->message;

    }

}



class Logger

{

    public function log($message)

    {

        $event = new LogEvent($message);

        $dispatcher = new EventDispatcher();

        $dispatcher->addListener(LogEvent::NAME, function (LogEvent $event) {

            echo "로그 발생!
";

            echo "로그 메시지: " . $event->getMessage() . "
";

        });

        $dispatcher->dispatch($event);

    }

}



$logger = new Logger();

$logger->log("Hello, World!");



이 예제에서는 `LogEvent` 클래스를 사용하여 이벤트를 발생시키고, `Logger` 클래스를 사용하여 이벤트를 처리합니다. `Logger` 클래스는 이벤트를 발생시키고, 이벤트 핸들러를 등록합니다. 이벤트 핸들러는 이벤트를 처리하고, 로그 메시지를 출력합니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

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

검색

게시물 검색