Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


psr:psr14

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
psr:psr14 [2020/07/28 11:52]
y2sunlight [エラー処理]
psr:psr14 [2020/09/01 11:54] (現在)
tanaka [PSR-14: Event Dispatcher]
行 1: 行 1:
-> 編集中 
- 
 ====== PSR-14: Event Dispatcher ====== ====== PSR-14: Event Dispatcher ======
  
  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-06-23//  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-06-23//
  
-本章は、若干の補足を加筆してはいるものの単に[[https://www.php-fig.org/psr/|PSRのサイト]]を翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。+本章は、若干の補足を加筆してはいるものの単に[[https://www.php-fig.org/psr/|PSRのサイト]]を日本語に翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。
  
 関連記事 関連記事
行 21: 行 19:
   * PSR-14: Event Dispatcher - イベントディスパッチャー    * PSR-14: Event Dispatcher - イベントディスパッチャー 
   * [[psr:psr15|PSR-15: HTTP Server Request Handlers - HTTPサーバーリクエストハンドラー]]    * [[psr:psr15|PSR-15: HTTP Server Request Handlers - HTTPサーバーリクエストハンドラー]] 
 +  * [[psr:psr16|PSR-16: Common Interface for Caching Libraries - キャッシングライブラリのための共通インターフェース]] 
 +  * [[psr:psr17|PSR-17: HTTP Factories - HTTPファクトリー]] 
 +  * [[psr:psr18|PSR-18: HTTP Client - HTTPクライアント]] 
 +  * [[psr:psr19|PSR-19: PHPDoc tags(Draft) - PHPDocタグ]] 
  
 ----- -----
行 128: 行 130:
 ===== リスナープロバイダー ===== ===== リスナープロバイダー =====
  
-A Listener Provider is a service object responsible for determining what Listeners are relevant to and should be called for a given Event. It may determine both what Listeners are relevant and the order in which to return them by whatever means it chooses. That MAY include:+リスナープロバイダーは、与えられたイベントに対してどのリスナーが関連し、どのリスナーを呼び出すべきかを決定することに責任があるサービスオブジェクトです。それは、関連するリスナーと、選択した手段によるそれらリスナーを返すべき順序、の両方を決定するかもしれません。それには以下の場合が含まれています( ''MAY'' ):
  
-リスナープロバイダーは、与えられたイベントに対してどのリスナーが関連し、どのリスナー呼び出すべきかを決定すること責任があるオブジェクす。それは、どのリスナーが関連していてそれが選択るどん手段によってもそれらを返す順序両方を決するかもしれません。それには場合が含まれています( ''MAY'' ):+  * 実装者がイベントにリスナーを固定された順序で割り当てることができるように、ある種の登録メカニズムを可能にします。\\ \\  
 +  * イベントのタイプと実装されたインターフェースに基づいたリフレクションにより、該当するリスナーのリス導きしま。\\ \\  
 +  * 前もって実行時参照される可能性のあるリスナの編集済みリストを生成します。\\ \\  
 +  * 現在のユーザーが特定の権限を持っている場合に特定のリスナーだけ呼び出されのようにある種のアクセス制御を実装。\\ \\  
 +  * エンティティのよう、イベントによって参照さるオブジェクトか情報抽出し、そオブジェクトで事前義さたライフサイクルメソッドを呼び出し\\ \\  
 +  * いくつかの任意のロジックを使用して、の責任を1つ他のリスナープロバイダーに委任します
  
-  * Allowing for some form of registration mechanism so that implementers may assign a Listener to an Event in a fixed order. +上記の任意の組み合わせ、または他のメカニズムが、必要に応じて使用できます( ''MAY'' )。
-  * Deriving a list of applicable Listeners through reflection based on the type and implemented interfaces of the Event. +
-  * Generating a compiled list of Listeners ahead of time that may be consulted at runtime. +
-  * Implementing some form of access control so that certain Listeners will only be called if the current user has a certain permission. +
-  * Extracting some information from an object referenced by the Event, such as an Entity, and calling pre-defined lifecycle methods on that object. +
-  * Delegating its responsibility to one or more other Listener Providers using some arbitrary logic.+
  
-  * 実装者がイベントにリスナーを固定された順序で割り当てることができるように、ある種の登録メカニズムを可能にします。 
-  * イベントのタイプと実装されたインターフェースに基づいたリフレクションにより、該当するリスナーのリストを導き出します。 
-  * 前もって実行時に参照される可能性のあるリスナーの編集済みリストを生成します。 
-  * 現在のユーザーが特定の権限を持っている場合に特定のリスナーが呼び出されるだけのよう、ある種のアクセス制御を実装します。 
-  * エンティティなどの、イベントによって参照されるオブジェクトから情報を抽出し、そのオブジェクトで事前定義されたライフサイクルメソッドを呼び出します。 
-  * 任意のロジックを使用して、その責任を1つ以上の他のリスナープロバイダーに委任します。 
  
-Any combination of the above, or other mechanisms, MAY be used as desired.+リスナープロバイダーは、イベントのクラス名を使用して、そのイベントと他のイベントを区別すべきです( ''SHOULD'' )。それらはまた、必要に応じて、イベントに関するその他の情報を考慮することもできます( ''MAY'' )。
  
-上記の任意の組み合わせ、または他のメカニズムは、必要に応じて使用できます( ''MAY'' )。 +リスナープロバイダーは、リスナーの適用性を決定するときに、親のタイプをイベント自体のタイプと同じように取り扱う必要があります( ''MUST'' )。次の場合:
- +
-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. +
- +
-リスナープロバイダーは、イベントのクラス名を使用して、イベントを区別する必要があります( ''SHOULD'' )。それらはまた、必要に応じて、イベントに関するその他の情報を考慮することができます( ''MAY'' )。 +
- +
-Listener Providers MUST treat parent types identically to the Event’s own type when determining listener applicability. In the following case: +
- +
-リスナープロバイダーは、リスナーの適用可能性を決定するときに、親のタイプをイベント自体のタイプと同じように取り扱う必要があります( ''MUST'' )。次の場合:+
  
 <code php> <code php>
行 167: 行 155:
 function listener(A $event): void {}; function listener(A $event): void {};
 </code> </code>
- 
-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. 
  
 リスナープロバイダーは、タイプ互換であるため、他の基準によって妨げられない限り、''listener()'' を ''$b'' の適切なリスナーとして取り扱う必要があります( ''MUST'' )。 リスナープロバイダーは、タイプ互換であるため、他の基準によって妨げられない限り、''listener()'' を ''$b'' の適切なリスナーとして取り扱う必要があります( ''MUST'' )。
行 175: 行 161:
  
 ===== オブジェクト構成 ===== ===== オブジェクト構成 =====
- 
-A Dispatcher SHOULD compose a Listener Provider to determine relevant listeners. It is RECOMMENDED that a Listener Provider be implemented as a distinct object from the Dispatcher but that is NOT REQUIRED. 
  
 ディスパッチャーは、関連するリスナーを決定するためにリスナープロバイダーを構成する必要があります( ''SHOULD'' )。 リスナープロバイダーをディスパッチャーとは異なるオブジェクトとして実装することをお勧めしますが( ''RECOMMENDED'' )、必須ではありません( ''NOT REQUIRED'' )。 ディスパッチャーは、関連するリスナーを決定するためにリスナープロバイダーを構成する必要があります( ''SHOULD'' )。 リスナープロバイダーをディスパッチャーとは異なるオブジェクトとして実装することをお勧めしますが( ''RECOMMENDED'' )、必須ではありません( ''NOT REQUIRED'' )。
行 188: 行 172:
  
 /** /**
- * Defines a dispatcher for events. 
  * イベントのディスパッチャを定義します。  * イベントのディスパッチャを定義します。
  */  */
行 194: 行 177:
 { {
     /**     /**
-     * Provide all relevant listeners with an event to process. 
      * 処理するイベントをすべての関連リスナーに提供します。      * 処理するイベントをすべての関連リスナーに提供します。
      *      *
      * @param object $event      * @param object $event
-       The object to process. 
        処理するオブジェクト。        処理するオブジェクト。
      *      *
      * @return object      * @return object
-     *   The Event that was passed, now modified by listeners. +       渡されたイベント。リスナーによって変更され
-     *   渡されたイベント。リスナーによって変更されました+
      */      */
     public function dispatch(object $event);     public function dispatch(object $event);
行 213: 行 193:
  
 /** /**
- * Mapper from an event to the listeners that are applicable to that event. 
  * イベントからそのイベントに適用可能なリスナーへのマッパー。  * イベントからそのイベントに適用可能なリスナーへのマッパー。
  */  */
行 220: 行 199:
     /**     /**
      * @param object $event      * @param object $event
-       An event for which to return the relevant listeners. 
        関連するリスナーを返すイベント。        関連するリスナーを返すイベント。
      * @return iterable<callable>      * @return iterable<callable>
-       An iterable (array, iterator, or generator) of callables.  Each +       iterable型のcallableオブジェクト(配列、iterator、またはgenerator)。  
-       callable MUST be type-compatible with $event. +       個々の callableオブジェクト は、$eventと型互換でなければなりません( MUST )。
-       呼び出し可能オブジェクトの反復可能オブジェクト(配列、反復子、またはジェネレーター)。  +
-       各呼び出し可能オブジェクトは、$eventと型互換でなければなりません( MUST )。+
      */      */
     public function getListenersForEvent(object $event) : iterable;     public function getListenersForEvent(object $event) : iterable;
行 236: 行 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.  If it is then it should 
- * 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によってのみ使用されます。
-     * これは通常、前のリスナーが伝播を停止したかどうかを判断するためにDispatcherによってのみ +
-     使用されます。+
      *      *
      * @return bool      * @return bool
-       True if the Event is complete and no further listeners should be called. 
-       False to continue calling listeners. 
        イベントが完了し、それ以上リスナーを呼び出さない場合はTrue。        イベントが完了し、それ以上リスナーを呼び出さない場合はTrue。
        リスナーの呼び出しを続行する場合はFalse。        リスナーの呼び出しを続行する場合はFalse。
psr/psr14.1595904761.txt.gz · 最終更新: 2020/07/28 11:52 by y2sunlight