Ground Sunlight

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

ユーザ用ツール

サイト用ツール


psr:psr14

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
psr:psr14 [2020/07/27 17:09]
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のサイト]]を日本語に翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。
  
 関連記事 関連記事
行 20: 行 18:
   * [[psr:psr13|PSR-13: Link definition interfaces - リンク定義インターフェース]]   * [[psr:psr13|PSR-13: Link definition interfaces - リンク定義インターフェース]]
   * PSR-14: Event Dispatcher - イベントディスパッチャー    * PSR-14: Event Dispatcher - イベントディスパッチャー 
-  * [[psr:psr15|PSR-15: HTTP 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タグ]] 
  
 ----- -----
行 72: 行 74:
 実装者は、同じオブジェクトが全てのリスナーに渡されることを想定する必要があります( ''MUST'' )。 実装者は、同じオブジェクトが全てのリスナーに渡されることを想定する必要があります( ''MUST'' )。
  
-イベントオブジェクトは可逆的なシリアル化と逆シリアル化をサポートすることを推奨されます( ''RECOMMENDED'' )、それは必須ではありません( ''NOT REQUIRED'' )。即ち、''$event == unserialize(serialize($event))'' は true を保つべきです( ''SHOULD'' )。 オブジェクトは、PHPの ''Serializable'' インターフェース、''<nowiki>__sleep()</nowiki>'' または ''<nowiki>__wakeup()</nowiki>'' マジックメソッド、または必要に応じて同様の言語機能を活用できます( MAY )。+イベントオブジェクトは可逆的なシリアル化と逆シリアル化をサポートすることを推奨されます( ''RECOMMENDED'' )。しかし、それは必須ではありません( ''NOT REQUIRED'' )。即ち、''$event == unserialize(serialize($event))'' は true を保つべきです( ''SHOULD'' )。 オブジェクトは、PHPの ''Serializable'' インターフェース、''<nowiki>__sleep()</nowiki>'' または ''<nowiki>__wakeup()</nowiki>'' マジックメソッド、または必要に応じて同様の言語機能を活用できます( MAY )。
  
 \\ \\
行 78: 行 80:
 ===== 停止可能なイベント ===== ===== 停止可能なイベント =====
  
-A Stoppable Event is a special case of Event that contains additional ways to prevent further Listeners from being called. It is indicated by implementing the StoppableEventInterface.+**停止可能なイベント**は、イベントの特殊なケースで、リスナーがさらに呼び出されないようにする追加の方法を含んでいます。これは、''StoppableEventInterface'' を実装することによって示すことができます。
  
-**停止可能なイベント**は、イベントの特殊なケースで、リスナーがさらに呼び出されないようにする追加の方法が含まれています。これは、''StoppableEventInterface'' を実装することにより示されます。 +StoppableEventInterfaceを実装するイベントは、それが表すどんなイベントが完了したときでも ''isPropagationStopped()'' から ''true'' を返す必要があります( ''MUST'' )。それがいつであるかを決定するのは、クラスの実装者次第です。例えば、PSR-7  
- + ''RequestInterface'' オブジェクトを対応する ''ResponseInterface'' オブジェクトと照合するように要求しているイベントは、リスナーが呼び出す ''setResponse(ResponseInterface $res)'' メソッドを持つことができます。これにより ''isPropagationStopped()'' が ''true''を返すようにできます。
-An Event that implements StoppableEventInterface MUST return true from isPropagationStopped() when whatever Event it represents has been completed. It is up to the implementer of the class to determine when that is. For example, an Event that is asking for a PSR-7 RequestInterface object to be matched with a corresponding ResponseInterface object could have a setResponse(ResponseInterface $res) method for a Listener to call, which causes isPropagationStopped() to return true. +
- +
-StoppableEventInterfaceを実装するイベントは、それが表すイベントが完了したときに ''isPropagationStopped()'' から ''true'' を返す必要があります( ''MUST'' )。それがいつであるかを決定するのは、クラスの実装者次第です。例えば、PSR-7  +
- ''RequestInterface'' オブジェクトを対応する ''ResponseInterface'' オブジェクトと照合するように要求しているイベントは、リスナーが呼び出す ''setResponse(ResponseInterface $res)'' メソッドを含めることができます。これにより ''isPropagationStopped()'' が ''true''を返すようにできます。+
  
 \\ \\
  
 ===== リスナー ===== ===== リスナー =====
- 
-A Listener may be any PHP callable. A Listener MUST have one and only one parameter, which is the Event to which it responds. Listeners SHOULD type hint that parameter as specifically as is relevant for their use case; that is, a Listener MAY type hint against an interface to indicate it is compatible with any Event type that implements that interface, or to a specific implementation of that interface. 
  
 リスナーは、任意のPHP callableです。リスナーは、パラメーターを1つだけ持つ必要があります( ''MUST'' )。それは、応答すべきイベントです。リスナーは、そのユースケースに特に関連するように、そのパラメーターにタイプヒントを示すべきです( ''SHOULD'' )。つまり、リスナーはインターフェースに対するタイプヒントを示す場合があり( ''MAY'' )、それはそのインターフェースを実装するすべてのイベントタイプまたはそのインターフェースの特定の実装と互換性があることを示します。 リスナーは、任意のPHP callableです。リスナーは、パラメーターを1つだけ持つ必要があります( ''MUST'' )。それは、応答すべきイベントです。リスナーは、そのユースケースに特に関連するように、そのパラメーターにタイプヒントを示すべきです( ''SHOULD'' )。つまり、リスナーはインターフェースに対するタイプヒントを示す場合があり( ''MAY'' )、それはそのインターフェースを実装するすべてのイベントタイプまたはそのインターフェースの特定の実装と互換性があることを示します。
- 
-A Listener SHOULD have a void return, and SHOULD type hint that return explicitly. A Dispatcher MUST ignore return values from Listeners. 
  
 リスナーの戻り値は ''void'' であるべきで( ''SHOULD'' )、明示的に戻すタイプヒントがあるべきです( ''SHOULD'' )。ディスパッチャーは、リスナーからの戻り値を無視する必要があります( ''MUST'' )。 リスナーの戻り値は ''void'' であるべきで( ''SHOULD'' )、明示的に戻すタイプヒントがあるべきです( ''SHOULD'' )。ディスパッチャーは、リスナーからの戻り値を無視する必要があります( ''MUST'' )。
  
-A Listener MAY delegate actions to other code. That includes a Listener being a thin wrapper around an object that runs the actual business logic. +リスナーは他のコードにアクションを委任することができます( ''MAY'' )。これには、薄いラッパーであるリスナーが含まれていて、それは実際のビジネスロジックを実行するオブジェクトを包んでいます。
- +
-リスナーは他のコードにアクションを委任してもよい( ''MAY'' )。これには、薄いラッパーであるリスナーが含まれていて、それは実際のビジネスロジックを実行するオブジェクトを包んでいます。+
  
-A Listener MAY enqueue information from the Event for later processing by a secondary process, using cron, a queue server, or similar techniques. It MAY serialize the Event object itself to do so; however, care should be taken that not all Event objects may be safely serializable. A secondary process MUST assume that any changes it makes to an Event object will NOT propagate to other Listeners.+リスナーは、cron、キューサーバー、または同様の手法を使用し、二次プロセスによるて後処理のために、イベントから情報をキューに追加する場合があります( ''MAY'' )。それを行うために、イベントオブジェクト自体をシリアル化することができます( ''MAY'' )。ただし、すべてのイベントオブジェクトが安全にシリアル化できるとは限らないことに注意する必要があります。二次プロセスは、イベントオブジェクトに加えた変更が他のリスナーに伝播しないこと( ''NOT'' )を前提とする必要があります( ''MUST'' )。
  
-リスナーは、cron、キューサーバー、または同様の手法を使用して、セカンダリプロセスによる後処理のためにイベントから情報をキューに追加する場合があります( ''MAY'' )。それを行うために、イベントオブジェクト自体をシリアル化することができます( ''MAY'' )。ただし、すべてのイベントオブジェクトが安全にシリアル化できるとは限らないことに注意する必要があります。セカンダリプロセスは、イベントオブジェクトに加えた変更が他のリスナーに伝播しないことを前提とする必要があります( ''MUST NOT'' )。+>''上記の原文'' 
 +>A Listener MAY enqueue information from the Event for later processing by a secondary process, using cron, a queue server, or similar techniques. It MAY serialize the Event object itself to do so; however, care should be taken that not all Event objects may be safely serializable. A secondary process MUST assume that any changes it makes to an Event object will NOT propagate to other Listeners.
  
 \\ \\
  
 ===== ディスパッチャー ===== ===== ディスパッチャー =====
- 
-A Dispatcher is a service object implementing EventDispatcherInterface. It is responsible for retrieving Listeners from a Listener Provider for the Event dispatched, and invoking each Listener with that Event. 
  
 ディスパッチャーは、''EventDispatcherInterface'' を実装するサービスオブジェクトです。それは、ディスパッチされるイベントに対するリスナープロバイダーからリスナーを取得し、そのイベントで各リスナーを呼び出す責任があります。 ディスパッチャーは、''EventDispatcherInterface'' を実装するサービスオブジェクトです。それは、ディスパッチされるイベントに対するリスナープロバイダーからリスナーを取得し、そのイベントで各リスナーを呼び出す責任があります。
- 
-A Dispatcher: 
  
 ディスパッチャーは: ディスパッチャーは:
  
-  * MUST call Listeners synchronously in the order they are returned from a ListenerProvider. +  * ListenerProvider から返された順番で、リスナーを同期的に呼び出さなければなりません( ''MUST'' )。
-  * MUST return the same Event object it was passed after it is done invoking Listeners. +
-  * MUST NOT return to the Emitter until all Listeners have executed. +
- +
-  * ListenerProviderから返された順番で、リスナーを同期的に呼び出さなければなりません( ''MUST'' )。+
   * リスナーの呼び出し完了後に渡されたものと同じイベントオブジェクトを返さなければなりません( ''MUST'' )。   * リスナーの呼び出し完了後に渡されたものと同じイベントオブジェクトを返さなければなりません( ''MUST'' )。
-  * すべてのリスナーが実行されるまで、エミッターに戻らないでください( ''MUST NOT'' )。 +  * すべてのリスナーが実行されるまで、エミッターに戻ってはけません( ''MUST NOT'' )。
- +
-If passed a Stoppable Event, a Dispatcher+
  
 停止可能なイベントが渡された場合、ディスパッチャーは: 停止可能なイベントが渡された場合、ディスパッチャーは:
  
-  * MUST call isPropagationStopped() on the Event before each Listener has been called. If that method returns true it MUST return the Event to the Emitter immediately and MUST NOT call any further Listeners. This implies that if an Event is passed to the Dispatcher that always returns true from isPropagationStopped(), zero listeners will be called.+  * そのイベントで各リスナーを呼び出す前に、''isPropagationStopped()'' を呼び出す必要があります( ''MUST'' )。そのメソッドが ''true'' を返す場合、それは直ちにイベントをエミッターに返さなければならず( ''MUST'' )、それ以上のリスナーを呼び出してはいけません( MUST NOT )。これは、''isPropagationStopped()'' から常に ''true'' を返すイベントがディスパッチャーに渡される場合、リスナーが呼び出されないことを意味します。
  
-  * そのイベントで各リスナーを呼び出す前に、''isPropagationStopped()'' を呼び出す必要があります( ''MUST'' )。そのメソッドが ''true'' を返す場合、それは直ちにイベントをエミッターに返さなければならず( ''MUST'' )、それ以上のリスナーを呼び出してはいけません( MUST NOT )。これは、''isPropagationStopped()'' から常に ''true'' を返すイベントがディスパッチャーに渡された場合、リスナーが呼び出されないことを意味します。 +ディスパッチャーは、リスナープロバイダーから返されるてのリスナーがタイプセーフであると仮定すべきです( ''SHOULD'' )。つまり、ディスパッチャーは、''$listener($event)'' を呼び出しても ''TypeError'' が生成されないことを仮定すべきです( ''SHOULD'' )。
- +
-A Dispatcher SHOULD assume that any Listener returned to it from a Listener Provider is type-safe. That is, the Dispatcher SHOULD assume that calling $listener($event) will not produce a TypeError. +
- +
-ディスパッチャーは、リスナープロバイダーから返されるすべてのリスナーがタイプセーフであると仮定すべきです( ''SHOULD'' )。つまり、ディスパッチャーは、''$listener($event)'' を呼び出しても ''TypeError'' が生成されないことを仮定すべきです( ''SHOULD'' )。+
  
 \\ \\
行 143: 行 122:
 ==== エラー処理 ==== ==== エラー処理 ====
  
-An Exception or Error thrown by a Listener MUST block the execution of any further Listeners. An Exception or Error thrown by a Listener MUST be allowed to propagate back up to the Emitter. +リスナーによってスローされた例外またはエラーは、それ以降のリスナーの実行をブロックする必要があります( ''MUST'' )。リスナーによってスローされた例外またはエラーは、エミッターにまで遡って伝播こと許可されていなければなりません( ''MUST'' )。
- +
-リスナーによってスローされた例外またはエラーは、それ以降のリスナーの実行をブロックする必要があります( ''MUST'' )。リスナーによってスローされた例外またはエラーは、エミッターにまで伝播でき必要りま( ''MUST'' )。 +
- +
-A Dispatcher MAY catch a thrown object to log it, allow additional action to be taken, etc., but then MUST rethrow the original throwable.+
  
-ディスパッチャーは、スローされたオブジェクトをキャッチしてログに記録したり、追加のアクションを実行したりできますが( ''MAY'' )、その後は、元のthrowableを再スローする必要があります( ''MUST'' )。+ディスパッチャーは、スローされたオブジェクトをキャッチしてログに記録したり、追加のアクションを実行したりできますが( ''MAY'' )、その後は、元の throwable を再スローする必要があります( ''MUST'' )。
  
 \\ \\
行 155: 行 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>
行 194: 行 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'' )。
行 202: 行 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'' )。
行 215: 行 172:
  
 /** /**
- * Defines a dispatcher for events. 
  * イベントのディスパッチャを定義します。  * イベントのディスパッチャを定義します。
  */  */
行 221: 行 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);
行 240: 行 193:
  
 /** /**
- * Mapper from an event to the listeners that are applicable to that event. 
  * イベントからそのイベントに適用可能なリスナーへのマッパー。  * イベントからそのイベントに適用可能なリスナーへのマッパー。
  */  */
行 247: 行 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;
行 263: 行 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.1595837370.txt.gz · 最終更新: 2020/07/27 17:09 by y2sunlight