이벤트 디스패처 예제

작곡가를 실행하면 프로젝트 디렉토리에서 심포니 /이벤트 디스패처가 필요합니다. 당신이 작곡가에 익숙하지 않은 경우, 지금 익숙해. 나는 우리가 그것없이 PHP 혁명을 가질 것이라고 생각하지 않습니다. 이전 섹션에서는 사용자 지정 이벤트및 사용자 지정 수신기를 만드는 방법을 보여 준 예제를 작성했습니다. 또한 EventDispatcher 클래스를 사용하여 수신기를 특정 이벤트에 바인딩하는 방법에 대해서도 설명했습니다. 이벤트가 트리거될 때 실행되도록 시스템 생성 이벤트에 대한 리스너를 정의할 수 있는 이벤트 관찰자 패턴에 익숙할 수 있습니다. 마찬가지로 Symfony EventDispatcher 구성 요소를 사용하면 사용자 지정 이벤트 및 리스너를 만들 수 있는 시스템을 설정할 수 있습니다. 이러한 방식으로 응용 프로그램의 구성 요소가 시스템에서 문제가 발생할 경우 반응할 수 있습니다. MouseEvent, KeyboardEvent 등과 같은 네이티브 이벤트의 다른 생성자는 해당 이벤트 유형과 관련된 속성을 허용합니다. 예를 들어 마우스 이벤트에 대한 clientX입니다. 그런 다음 두 가지 방법을 사용: addListener 특정 이벤트 “getUserInfo”를 듣고 API에서 응답을 받은 후 디스패치 를 디스패치.

이제 우리는 removeListener 메서드를 구현, 그것은 특정 이벤트에 대 한 수신기 목록에서 수신기를 제거할 수 있습니다. 7 단계 – 마지막으로 이벤트 디스패처의 방법, 디스패치를 사용하여 이벤트를 발생 / 파견하십시오. 다음 예제에서 가상GUI 위젯은 몇 가지 이벤트를 제공합니다: “hello”와 같은 사용자 지정 이벤트의 경우 새 CustomEvent를 사용해야 합니다. 기술적으로 사용자 지정 이벤트는 한 가지 예외를 제외하고 이벤트와 동일합니다. 이벤트를 문서화하려면 이벤트의 서명이 있는 메서드를 만들고 문서 문자열에 빈 이벤트 필드를 추가합니다: EventDispatcher 인스턴스와 디스패치된 이벤트 이름은 수신기에 대한 인수로 전달됩니다. 그래픽 구성 요소”. 예를 들어 메뉴의 루트 요소는 메뉴에서 발생하는 일을 알리는 이벤트를 트리거할 수 있습니다: 열기(메뉴 열기), 선택(항목 선택) 등등. 캐시를 지울 때 응용 프로그램의 다른 구성 요소가 반응하도록 허용한다고 가정해 보겠습니다.

이 경우 처음에 지우기 캐시 이벤트를 정의해야 합니다. 캐시를 지운 후 디스패처를 사용하여 clear cache 이벤트를 발생시키고 이 이벤트를 듣고 있는 모든 수신기에 알립니다. 이렇게 하면 리스너가 구성 요소별 캐시를 제거할 수 있습니다. 그런 다음 처리기는 일반 기본 제공 이벤트인 것처럼 반응합니다. 이벤트가 거품 플래그로 만들어진 경우 거품이 발생합니다. 마지막으로 EventDispatcher 클래스의 디스패치 메서드를 사용하여 demo.event 이벤트를 디스패치했습니다. 이러한 이벤트를 만들려면 새 이벤트 대신 사용해야 합니다. 예를 들어, 새 MouseEvent(“클릭”). 다음 코드와 같이 익명 함수를 이벤트 리스너로 추가할 수도 있습니다. 예를 들어 아래 예제에는 hide() 함수가 있습니다. #rabbit 요소에서 “숨기기” 이벤트를 생성하여 모든 이해 당사자에게 토끼가 숨겨질 것임을 알수 있습니다. 처리기를 실행하는 해커 방법이기 때문에 브라우저 이벤트를 생성해서는 안됩니다.