このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
psr:psr14 [2020/07/28 14:09] y2sunlight [リスナープロバイダー] |
psr:psr14 [2020/09/01 11:54] (現在) tanaka [PSR-14: Event Dispatcher] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | > 編集中 | ||
- | |||
====== PSR-14: Event Dispatcher ====== | ====== PSR-14: Event Dispatcher ====== | ||
--- // | --- // | ||
- | 本章は、若干の補足を加筆してはいるものの単に[[https:// | + | 本章は、若干の補足を加筆してはいるものの単に[[https:// |
関連記事 | 関連記事 | ||
行 21: | 行 19: | ||
* PSR-14: Event Dispatcher - イベントディスパッチャー | * PSR-14: Event Dispatcher - イベントディスパッチャー | ||
* [[psr: | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
----- | ----- | ||
行 139: | 行 141: | ||
上記の任意の組み合わせ、または他のメカニズムが、必要に応じて使用できます( '' | 上記の任意の組み合わせ、または他のメカニズムが、必要に応じて使用できます( '' | ||
- | Listener Providers SHOULD use the class name of an Event to differentiate one event from another. They MAY also consider any other information on the event as appropriate. | ||
- | リスナープロバイダーは、イベントのクラス名を使用して、イベントを区別する必要があります( '' | + | リスナープロバイダーは、イベントのクラス名を使用して、そのイベントと他のイベントを区別すべきです( '' |
- | Listener Providers MUST treat parent types identically to the Event’s own type when determining listener applicability. In the following case: | + | リスナープロバイダーは、リスナーの適用性を決定するときに、親のタイプをイベント自体のタイプと同じように取り扱う必要があります( '' |
- | + | ||
- | リスナープロバイダーは、リスナーの適用可能性を決定するときに、親のタイプをイベント自体のタイプと同じように取り扱う必要があります( '' | + | |
<code php> | <code php> | ||
行 156: | 行 155: | ||
function listener(A $event): void {}; | function listener(A $event): void {}; | ||
</ | </ | ||
- | |||
- | A Listener Provider MUST treat listener() as an applicable listener for $b, as it is type compatible, unless some other criteria prevents it from doing so. | ||
リスナープロバイダーは、タイプ互換であるため、他の基準によって妨げられない限り、'' | リスナープロバイダーは、タイプ互換であるため、他の基準によって妨げられない限り、'' | ||
行 175: | 行 172: | ||
/** | /** | ||
- | * Defines a dispatcher for events. | ||
* イベントのディスパッチャを定義します。 | * イベントのディスパッチャを定義します。 | ||
*/ | */ | ||
行 181: | 行 177: | ||
{ | { | ||
/** | /** | ||
- | * Provide all relevant listeners with an event to process. | ||
* 処理するイベントをすべての関連リスナーに提供します。 | * 処理するイベントをすべての関連リスナーに提供します。 | ||
* | * | ||
* @param object $event | * @param object $event | ||
- | | ||
| | ||
* | * | ||
* @return object | * @return object | ||
- | * The Event that was passed, now modified by listeners. | + | |
- | * | + | |
*/ | */ | ||
public function dispatch(object $event); | public function dispatch(object $event); | ||
行 200: | 行 193: | ||
/** | /** | ||
- | * Mapper from an event to the listeners that are applicable to that event. | ||
* イベントからそのイベントに適用可能なリスナーへのマッパー。 | * イベントからそのイベントに適用可能なリスナーへのマッパー。 | ||
*/ | */ | ||
行 207: | 行 199: | ||
/** | /** | ||
* @param object $event | * @param object $event | ||
- | | ||
| | ||
* @return iterable< | * @return iterable< | ||
- | | + | |
- | | + | |
- | | + | |
- | | + | |
*/ | */ | ||
public function getListenersForEvent(object $event) : iterable; | public function getListenersForEvent(object $event) : iterable; | ||
行 223: | 行 212: | ||
/** | /** | ||
- | * An Event whose processing may be interrupted when the event has been handled. | + | * イベントが操作されたとき、処理が中断される可能性があるイベント。 |
- | * イベントが処理されたときに処理が中断される可能性があるイベント。 | + | * |
+ | * Dispatcherの実装は、各リスナーが呼び出された後にイベントが停止済みとして | ||
+ | * マークされているかどうかを確認する必要があります( MUST )。もしそうであれば、 | ||
+ | * それ以上リスナーを呼び出さずにすぐに戻る必要があります。 | ||
* | * | ||
- | * A Dispatcher implementation MUST check to determine if an Event | ||
- | * is marked as stopped after each listener is called. | ||
- | * return immediately without calling any further Listeners. | ||
- | * Dispatcher実装は、各リスナーが呼び出された後にイベントが停止済みとしてマークされているかどうかを | ||
- | * 確認する必要があります( MUST )。そうであれば、それ以上リスナーを呼び出さずにすぐに戻る必要が | ||
- | * あります。 | ||
*/ | */ | ||
interface StoppableEventInterface | interface StoppableEventInterface | ||
{ | { | ||
/** | /** | ||
- | * Is propagation stopped? | + | * 伝播が停止しているか? |
- | * 伝播は停止していますか? | + | |
* | * | ||
- | * This will typically only be used by the Dispatcher to determine if the | + | * これは通常、前のリスナーが伝播を停止したかどうかを判断するために |
- | * previous listener halted propagation. | + | |
- | * これは通常、前のリスナーが伝播を停止したかどうかを判断するためにDispatcherによってのみ | + | |
- | | + | |
* | * | ||
* @return bool | * @return bool | ||
- | | ||
- | | ||
| | ||
| |