라이브러리
[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` 클래스는 이벤트를 발생시키고, 이벤트 핸들러를 등록합니다. 이벤트 핸들러는 이벤트를 처리하고, 로그 메시지를 출력합니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.