0
이벤트 디스패처와 인터페이스를 시도하고 있으며 해결책이 떠오르고 있습니다. 어떻게 이벤트 디스패처를 인터페이스합니까?
interface EventDispatcherInterface
{
public function fire($name, $data);
}
지금 내가 심포니의
EventDispatcher
를 사용하여 구현하기 위해 노력하고있어 지금까지 나는 다음과 같은 간단한 인터페이스를 가지고있다. 문제는 symfony의
dispatch
메소드가 두 번째 인수가
Event
추상 클래스를 구현할 것으로 기대한다는 것입니다. 좋아, 이제 래퍼 클래스를 생각해 내야 만 해?
use Symfony\Component\EventDispatcher\Event;
class SymfonyEvent extends Event
{
private $data;
public function __construct($data)
{
$this->data = $data;
}
public function getData()
{
return $this->data;
}
}
여기
use Symfony\Component\EventDispatcher\EventDispatcher as SymfonyEventDispatcher;
class SymfonyDispatcher implements EventDispatcherInterface
{
protected $dispatcher;
public function __construct(SymfonyEventDispatcher $dispatcher = null)
{
$this->dispatcher = $dispatcher ? : new SymfonyEventDispatcher;
}
public function fire($name, $data)
{
$event = new SymfonyEvent($data);
$this->dispatcher->dispatch($name, $event);
}
}
어떻게 내가 무신론자 이벤트 리스너를 작성 가야합니까 구현의 첫 번째 패스이다? 정확히 문제에 Matthais Noback의 위대한 블로그에서
당신은 당신이 필요로하는 이유에 대해 좀 더 설명해 주시겠습니까? SymfonyDispatcher가 트릭을 수행하는 것처럼 보입니다. 화재 방법을 원한다면 symfony 디스패처 클래스를 확장 한 다음 설정 파일을 조정하여 자신의 디스패처를 사용할 수 있습니다. 하지만 왜? – Cerad
프레임 워크에 무관 한 패키지를 작성하려고합니다. 도전 과제가되었습니다! – David
Symfony EventDispatcher는 구성 요소이며 Symfony 프레임 워크와 독립적입니다. 패키지에 특정 구성 요소의 사용이 필요하다는 사실이 불가지론적인 요구 사항을 충족 시킨다는 것을 확신시켜보십시오. – Cerad