찾다

 >  Q&A  >  본문

Symfony - EventDispatcher 구성 요소

모두 감사합니다 최근에 Symfony2를 배우고 있는데 지금은 EventDispatcher 구성 요소를 이해할 수 없고 공식 문서도 그다지 명확하지 않습니다. . 해결

ringa_leeringa_lee2791일 전362

모든 응답(1)나는 대답할 것이다

  • 黄舟

    黄舟2017-05-16 16:46:48

    jQuery에 익숙하시나요? 이벤트 메커니즘은 항상 동일합니다:

    (1) 먼저 이벤트 이름을 정의합니다

    이것은 js의 onclick과 같으며, Vendor.my_event와 같은 이벤트 이름을 정의할 수 있습니다. 사용하기 쉽도록 "열거" 클래스를 사용하여 이러한 이벤트를 기록할 수 있습니다. 으아악

    문자열을 직접 작성하는 대신 코드에서 Events::MY_EVENT를 사용할 수 있습니다. 이 "열거" 클래스를 작성할 필요는 없지만 권장됩니다.

      실수하면 디버깅을 용이하게 하기 위해 오류가 직접 보고됩니다
    1. 간편한 유지 관리를 위해 중앙 집중화하세요(그렇지 않으면 어떤 이벤트가 있는지 잊어버릴 수 있습니다)
    (2) 이벤트 클래스 정의(컨텍스트 정의)

    jQuery를 사용하면 일반적으로 이벤트 클래스를 직접 정의하지 않지만 실제로 이 이벤트 클래스도 존재합니다(기본 클래스가 사용됨). jQuery의 이벤트 콜백에서 허용되는 첫 번째 매개변수는 이벤트 클래스의 객체이고 이 객체는 e.target과 같은 일부 상황에 맞는 항목을 전달합니다.

    sf의 EventDispatcher를 사용하면 유형 검사를 수행하고 콜백에 대한 컨텍스트(일반인의 용어로 이벤트 객체에서 얻을 수 있는 데이터)를 제공하기 위해 자신만의 이벤트 클래스를 정의할 수 있습니다.

    으아악

    (3) 트리거 이벤트

    이벤트 이름과 이벤트 클래스가 있고 SF는 이미 이벤트 디스패처를 갖추고 있습니다. 이벤트를 트리거하는 데 직접 사용할 수 있습니다.

    으아악

    (4) 리스너 정의(콜백)

    으아악

    (5) 콜백이 해당 이벤트를 수신하도록 합니다

    코드를 사용하여 콜백을 추가할 수 있습니다:

    으아악

    구성, 즉 종속성 주입(DIC)을 사용할 수도 있습니다.

    으아악

    회신하다
    0
  • 취소회신하다