Ground Sunlight

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

ユーザ用ツール

サイト用ツール


psr:psr6

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
psr:psr6 [2020/05/20 17:04]
y2sunlight [エラー処理]
psr:psr6 [2020/09/01 11:52] (現在)
tanaka [PSR-6: Caching Interface]
行 1: 行 1:
-> 編集中 
- 
 ====== PSR-6: Caching Interface ====== ====== PSR-6: Caching Interface ======
  
  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-05-19//  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-05-19//
  
-本章は、若干の補足を加筆してはいるものの単に[[https://www.php-fig.org/psr/|PSRのサイト]]を翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。+本章は、若干の補足を加筆してはいるものの単に[[https://www.php-fig.org/psr/|PSRのサイト]]を日本語に翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。 
 + 
 +関連記事
  
-==== 目次 ==== +  * [[psr:top|PSR - PHP標準勧告]]
-  * [[psr:top|PHP - PHP標準勧告]]+
   * [[psr:psr1|PSR-1: Basic Coding Standard - 基本コーディング規約]]   * [[psr:psr1|PSR-1: Basic Coding Standard - 基本コーディング規約]]
   * [[psr:psr3|PSR-3: Logger Interface - ロガーインターフェイス]]   * [[psr:psr3|PSR-3: Logger Interface - ロガーインターフェイス]]
行 14: 行 13:
   * [[psr:psr5|PSR-5: PHPDoc Standard(Draft) - PHPDoc規約]]   * [[psr:psr5|PSR-5: PHPDoc Standard(Draft) - PHPDoc規約]]
   * PSR-6: Caching Interface - キャッシングインターフェイス   * PSR-6: Caching Interface - キャッシングインターフェイス
 +  * [[psr:psr7|PSR-7: HTTP Message Interface - HTTPメッセージインターフェイス]] 
 +  * [[psr:psr11|PSR-11: Container Interface - コンテナインターフェイス]] 
 +  * [[psr:psr12|PSR-12: Extended Coding Style - 拡張コーディングスタイル]] 
 +  * [[psr:psr13|PSR-13: Link definition interfaces - リンク定義インターフェース]]
 +  * [[psr:psr14|PSR-14: Event Dispatcher - イベントディスパッチャー]] 
 +  * [[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タグ]] 
  
 ----- -----
行 49: 行 58:
   * **Implementing Library** -- Calling Library にキャッシングサービスを提供するために、このライブラリは本規約を実装する責任があります。Implementing Library は、Cache\CacheItemPoolInterface および Cache\CacheItemInterface インターフェースを実装するクラスを提供する必要があります (''MUST'')。Implementing Libraries では、1秒単位で 以下に説明するように、最小限のTTL (Time To Live) 機能をサポートする必要があります (''MUST'')。\\ \\    * **Implementing Library** -- Calling Library にキャッシングサービスを提供するために、このライブラリは本規約を実装する責任があります。Implementing Library は、Cache\CacheItemPoolInterface および Cache\CacheItemInterface インターフェースを実装するクラスを提供する必要があります (''MUST'')。Implementing Libraries では、1秒単位で 以下に説明するように、最小限のTTL (Time To Live) 機能をサポートする必要があります (''MUST'')。\\ \\ 
   * **TTL** -- アイテムの残存期間(TTL:Time To Live)は、そのアイテムが保存されてから古くなったと見なされるまでの時間のことです。TTL は通常、秒単位の時間を表す整数、または DateInterval オブジェクトによって定義されます。\\ \\    * **TTL** -- アイテムの残存期間(TTL:Time To Live)は、そのアイテムが保存されてから古くなったと見なされるまでの時間のことです。TTL は通常、秒単位の時間を表す整数、または DateInterval オブジェクトによって定義されます。\\ \\ 
-  * **有効期限** -- アイテムが古くなったと設定される実際の時間。これは通常、オブジェクトが格納された時刻に TTL を加することで計算されますが、DateTime オブジェクトで明示的に設定することもできます。 300秒の TTL を持つアイテムが 1:30:00 に保存された時、その有効期限は 1:35:00 です。Implementing Library は、要求された有効期限の前にアイテムを期限切れにすることができます (''MAY'')。ただし、有効期限に達したら、アイテムは期限切れとして扱う必要があります (''MUST'')。Calling Library はアイテムの保存を要求しますが、有効期限を指定しない場合、または有効期限または TTL を null に指定した場合、Implementing Library は、構成されたデフォルトの期間を使用してもかまいません (''MAY'')。 デフォルトの期間が設定されていない場合、Implementing Library は、それを、アイテムを永久に(または基本となる実装がサポートしている限りの間)キャッシュする要求として、それを解釈する必要があります (''MUST'')。\\ \\ +  * **有効期限** -- アイテムが古くなったと設定される実際の時間。これは通常、オブジェクトが格納された時刻に TTL を加することで計算されますが、DateTime オブジェクトで明示的に設定することもできます。 300秒の TTL を持つアイテムが 1:30:00 に保存された時、その有効期限は 1:35:00 です。Implementing Library は、要求された有効期限の前にアイテムを期限切れにすることができます (''MAY'')。ただし、有効期限に達したら、アイテムは期限切れとして扱う必要があります (''MUST'')。Calling Library はアイテムの保存を要求しますが、有効期限を指定しない場合、または有効期限または TTL を null に指定した場合、Implementing Library は、構成されたデフォルトの期間を使用してもかまいません (''MAY'')。 デフォルトの期間が設定されていない場合、Implementing Library は、それを、アイテムを永久に(または基本となる実装がサポートしている限りの間)キャッシュする要求として、それを解釈する必要があります (''MUST'')。\\ \\ 
   * **キー** -- キャッシュされたアイテムを一意に識別する少なくとも1つの文字の文字列。Implementing Library は UTF-8 エンコードで最大 64 文字の長さで任意の順序の文字、''A 〜 Z''、''a 〜 z''、''0 〜 9''、アンダースコア(''_'')、およびピリオド(''.'') の文字で構成されるキーをサポートする必要があります (''MUST'')。Implementing Library は、追加の文字とエンコーディング または より長い文字長をサポートする場合がありますが (''MAY'')、少なくともその最小値をサポートしなければなりません。ライブラリは、必要に応じてキー文字列の独自のエスケープに責任がありますが、変更されていない元のキー文字列を返すことができる必要があります (''MUST'')。 次の文字は、将来の拡張のために予約されており、Implementing Library によってサポートしてはなりません (''MUST NOT''):''{}()/\@:'' \\ \\    * **キー** -- キャッシュされたアイテムを一意に識別する少なくとも1つの文字の文字列。Implementing Library は UTF-8 エンコードで最大 64 文字の長さで任意の順序の文字、''A 〜 Z''、''a 〜 z''、''0 〜 9''、アンダースコア(''_'')、およびピリオド(''.'') の文字で構成されるキーをサポートする必要があります (''MUST'')。Implementing Library は、追加の文字とエンコーディング または より長い文字長をサポートする場合がありますが (''MAY'')、少なくともその最小値をサポートしなければなりません。ライブラリは、必要に応じてキー文字列の独自のエスケープに責任がありますが、変更されていない元のキー文字列を返すことができる必要があります (''MUST'')。 次の文字は、将来の拡張のために予約されており、Implementing Library によってサポートしてはなりません (''MUST NOT''):''{}()/\@:'' \\ \\ 
   * **ヒット** -- キャッシュヒットは、Calling Library がキーでアイテムを要求し、そのキーに一致する値が見つかり、その値が期限切れになっておらず、そして他の理由で値が無効でない場合に発生します。Calling Library は、すべての get() 呼び出しで isHit() による確認をすべきです (''SHOULD'')。\\ \\    * **ヒット** -- キャッシュヒットは、Calling Library がキーでアイテムを要求し、そのキーに一致する値が見つかり、その値が期限切れになっておらず、そして他の理由で値が無効でない場合に発生します。Calling Library は、すべての get() 呼び出しで isHit() による確認をすべきです (''SHOULD'')。\\ \\ 
行 72: 行 81:
  
  
-Implementing Library に渡されるすべてのデータは、渡されたとおりに返される必要があります (''MUST'')。それには変数の型も含まれます。つまり、(int)5 が保存された値である場合、(string)5 を返すのはエラーです。ライブラリの実装では、PHPの''serialize()'' / ''unserialize()'' 関数を内部で使用できますが (''MAY'')、必須ではありません。それらとの互換性は、許容可能なオブジェクト値のベースラインとして単に使用されます。 +Implementing Library に渡されるすべてのデータは、渡されたとおりに返される必要があります (''MUST'')。それには変数の型も含まれます。つまり、(int)5 が保存された値である場合、(string)5 を返すのはエラーです。ライブラリの実装では、PHPの''serialize()'' / ''unserialize()'' 関数を内部で使用できますが (''MAY'')、必須ではありません。それらとの互換性は、許すことができるオブジェクト値の基準として単に使用されます。
- +
->''上記の原文'' \\ Compatibility with them is simply used as a baseline for acceptable object values. \\ \\ --- 曖昧な翻訳 ---\\ 上記文章の最後のセンテンスの意味が不明+
  
 なんらかの理由で正確に保存された値を返すことができない場合、Implementing library は、破損したデータではなくキャッシュミスで応答する必要があります (''MUST'')。 なんらかの理由で正確に保存された値を返すことができない場合、Implementing library は、破損したデータではなくキャッシュミスで応答する必要があります (''MUST'')。
行 108: 行 115:
 ==== CacheItemInterface ==== ==== CacheItemInterface ====
  
-**CacheItemInterface** は、キャッシュシステム内のアイテムを定義します。各Itemオブジェクトは特定のキーに関連付けられている必要があります。これは実装システムに従って設定でき、通常は **Cache\CacheItemPoolInterface** オブジェクトによって渡されます。+CacheItemInterface は、キャッシュシステム内のアイテムを定義します。各アイテムオブジェクトは特定のキーに関連付けられている必要があります。これは実装システムに従って設定でき、通常は ''Cache\CacheItemPoolInterface'' オブジェクトによって渡されます。
  
-**Cache\CacheItemInterface** オブジェクトは、キャッシュアイテムの入出庫をカプセル化します。 個々の **Cache\CacheItemInterface** は **Cache\CacheItemPoolInterface** オブジェクトによって生成されます。このオブジェクトは、必要な設定に責任を負い、オブジェクトを一意のキーに関連付けます。 ''Cache\CacheItemInterface'' オブジェクトは、本ドキュメントのデータセクションで定義されている任意のタイプのPHP値を保存と取得できる必要があります (''MUST'')。+''Cache\CacheItemInterface'' オブジェクトは、キャッシュアイテムの入出庫をカプセル化します。 個々の ''Cache\CacheItemInterface'' は ''Cache\CacheItemPoolInterface'' オブジェクトによって生成されます。このオブジェクトは、必要な設定に責任を負い、オブジェクトを一意のキーに関連付けます。 ''Cache\CacheItemInterface'' オブジェクトは、本ドキュメントのデータセクションで定義されている任意のタイプのPHP値を保存と取得できる必要があります (''MUST'')。
  
-**Calling Library** は、アイテムオブジェクト自体をインスタンス化してはなりません (''MUST NOT'')。それらは、**getItem()** メソッドを介してプールオブジェクトからのみ要求できます。**Calling Library** は、ある **Implementing Library** によって作成されたアイテムが別の **Implementing Library** のプール と互換性があるとは想定しないでください (''SHOULD NOT'')。+Calling Library は、アイテムオブジェクト自体をインスタンス化してはなりません (''MUST NOT'')。それらは、''getItem()'' メソッドを介してプールオブジェクトからのみ要求できます。Calling Library は、ある Implementing Library によって作成されたアイテムが別の Implementing Library のプール と互換性があるとは想定しないでください (''SHOULD NOT'')。
  
 ^メソッド^要約^ ^メソッド^要約^
行 258: 行 265:
 ==== CacheItemPoolInterface ==== ==== CacheItemPoolInterface ====
  
-**Cache\CacheItemPoolInterface** の主な目的は、''Calling Library'' からキーを受け取り、関連付けられた**Cache\CacheItemInterface** オブジェクトを返すことです。また、キャッシュコレクション全体との相互作用も主要なポイントです。プールのすべての構成と初期化は、**Implementing Library** に任されています。+Cache\CacheItemPoolInterface の主な目的は、Calling Library からキーを受け取り、関連付けられた Cache\CacheItemInterface オブジェクトを返すことです。また、キャッシュコレクション全体との相互作用も主要なポイントです。プールのすべての構成と初期化は、Implementing Library に任されています。 
 + 
 +^メソッド^要約^ 
 +|getItem($key)|指定されたキーを表すキャッシュアイテムを返します。| 
 +|getItems(array $keys = array())|走査可能(Traversable)なキャッシュアイテムのセットを返します。| 
 +|hasItem($key)|キャッシュに指定されたキャッシュアイテムが含まれているかどうかを確認します。| 
 +|clear()|プール内のすべてのアイテムを削除します。| 
 +|deleteItem($key)|プールからアイテムを削除します。| 
 +|deleteItems(array $keys)|プールから複数のアイテムを削除します。| 
 +|save(CacheItemInterface $item)|キャッシュアイテムをすぐに永続化します。| 
 +|saveDeferred(CacheItemInterface $item)|キャッシュアイテムを後で永続化するように設定します| 
 +|commit()|延期されたキャッシュアイテムを永続化します|
  
 <code php> <code php>
行 277: 行 295:
      * This method must always return a CacheItemInterface object, even in case of      * This method must always return a CacheItemInterface object, even in case of
      * a cache miss. It MUST NOT return null.      * a cache miss. It MUST NOT return null.
 +     
      * このメソッドは、キャッシュミスの場合でも、常にCacheItemInterfaceオブジェクトを      * このメソッドは、キャッシュミスの場合でも、常にCacheItemInterfaceオブジェクトを
-     * 返す必要があります。 nullを返してはなりません。+     * 返す必要があります。nullを返してはなりません。
      *      *
      * @param string $key      * @param string $key
        The key for which to return the corresponding Cache Item.        The key for which to return the corresponding Cache Item.
-       対応するキャッシュアイテムを返すキー。+       対応するキャッシュアイテムを返すべきキー。
      *      *
      * @throws InvalidArgumentException      * @throws InvalidArgumentException
        If the $key string is not a legal value a \Psr\Cache\InvalidArgumentException        If the $key string is not a legal value a \Psr\Cache\InvalidArgumentException
        MUST be thrown.        MUST be thrown.
 +     
        $key文字列が有効な値でない場合は、\Psr\Cache\InvalidArgumentExceptionを        $key文字列が有効な値でない場合は、\Psr\Cache\InvalidArgumentExceptionを
        スローする必要があります。        スローする必要があります。
行 298: 行 318:
     /**     /**
      * Returns a traversable set of cache items.      * Returns a traversable set of cache items.
-     通過可能なキャッシュアイテムのセットを返します。+     走査可能(Traversable)なキャッシュアイテムのセットを返します。
      *      *
      * @param string[] $keys      * @param string[] $keys
        An indexed array of keys of items to retrieve.        An indexed array of keys of items to retrieve.
-       取得するアイテムのキーのインデックス付き配列。+       取得するアイテムのキーの添字配列。
      *      *
      * @throws InvalidArgumentException      * @throws InvalidArgumentException
        If any of the keys in $keys are not a legal value a \Psr\Cache\InvalidArgumentException        If any of the keys in $keys are not a legal value a \Psr\Cache\InvalidArgumentException
        MUST be thrown.        MUST be thrown.
 +     
        $keysのいずれかのキーが有効な値ではない場合、\Psr\Cache\InvalidArgumentExceptionを        $keysのいずれかのキーが有効な値ではない場合、\Psr\Cache\InvalidArgumentExceptionを
        スローする必要があります。        スローする必要があります。
行 315: 行 336:
        key is not found. However, if no keys are specified then an empty        key is not found. However, if no keys are specified then an empty
        traversable MUST be returned instead.        traversable MUST be returned instead.
-       各アイテムのキャッシュキーによってキー設定された、キャッシュアイテムの通過可能なコレクション。 +     *  
-       キャッシュアイテムは、そのキーが見つからない場合でも、キーごとに返されます。 +     *   各アイテムのキャッシュキーによってキー設定された、キャッシュアイテムの走査可能なコレクション。 
 +       ーごとに、そのキーが見つからない場合でも、キャッシュアイテムは返されます。 
        ただし、キーが指定されていない場合は、代わりに空の走査可能オブジェクトを返す必要があります。        ただし、キーが指定されていない場合は、代わりに空の走査可能オブジェクトを返す必要があります。
      */      */
行 328: 行 350:
      * This could result in a race condition with CacheItemInterface::get(). To avoid      * This could result in a race condition with CacheItemInterface::get(). To avoid
      * such situation use CacheItemInterface::isHit() instead.      * such situation use CacheItemInterface::isHit() instead.
 +     
      * 注:このメソッドは、パフォーマンス上の理由から、キャッシュされた値の取得を回避する      * 注:このメソッドは、パフォーマンス上の理由から、キャッシュされた値の取得を回避する
      * 場合があります。これにより、CacheItemInterface::get()で競合状態が発生する可能性があります。       * 場合があります。これにより、CacheItemInterface::get()で競合状態が発生する可能性があります。 
-     * このような状況を回避するには、代わりにCacheItemInterface::isHit()を使用します。+     * このような状況を回避するには、代わりに CacheItemInterface::isHit() を使用します。
      *      *
      * @param string $key      * @param string $key
行 339: 行 362:
        If the $key string is not a legal value a \Psr\Cache\InvalidArgumentException        If the $key string is not a legal value a \Psr\Cache\InvalidArgumentException
        MUST be thrown.        MUST be thrown.
 +     
        $key文字列が有効な値でない場合は、\Psr\Cache\InvalidArgumentExceptionを        $key文字列が有効な値でない場合は、\Psr\Cache\InvalidArgumentExceptionを
        スローする必要があります。        スローする必要があります。
行 354: 行 378:
      * @return bool      * @return bool
        True if the pool was successfully cleared. False if there was an error.        True if the pool was successfully cleared. False if there was an error.
-       プールが正常にクリアされた場合はtrue。 エラーがあった場合はFalse。+       プールが正常にクリアされた場合はtrue。エラーがあった場合はFalse。
      */      */
     public function clear();     public function clear();
行 362: 行 386:
      * プールからアイテムを削除します      * プールからアイテムを削除します
      *      *
- 
- 
      * @param string $key      * @param string $key
        The key to delete.        The key to delete.
行 371: 行 393:
        If the $key string is not a legal value a \Psr\Cache\InvalidArgumentException        If the $key string is not a legal value a \Psr\Cache\InvalidArgumentException
        MUST be thrown.        MUST be thrown.
 +     
        $key文字列が有効な値でない場合は、\Psr\Cache\InvalidArgumentExceptionを        $key文字列が有効な値でない場合は、\Psr\Cache\InvalidArgumentExceptionを
        スローする必要があります。        スローする必要があります。
行 376: 行 399:
      * @return bool      * @return bool
        True if the item was successfully removed. False if there was an error.        True if the item was successfully removed. False if there was an error.
-       アイテムが正常に削除された場合はtrue。 エラーがあった場合はFalse。+       アイテムが正常に削除された場合はtrue。エラーがあった場合はFalse。
      */      */
     public function deleteItem($key);     public function deleteItem($key);
行 391: 行 414:
        If any of the keys in $keys are not a legal value a \Psr\Cache\InvalidArgumentException        If any of the keys in $keys are not a legal value a \Psr\Cache\InvalidArgumentException
        MUST be thrown.        MUST be thrown.
-       $keysのいずれかのキーが有効な値ではない場合、\Psr\Cache\InvalidArgumentExceptionを+     *  
 +     *   $keysのいずれかのキーが有効な値ではない場合、\Psr\Cache\InvalidArgumentException を
        スローする必要があります。        スローする必要があります。
      *      *
行 402: 行 426:
     /**     /**
      * Persists a cache item immediately.      * Persists a cache item immediately.
-     * キャッシュアイテムをすぐに保持します+     * キャッシュアイテムをすぐに永続化します
      *      *
      * @param CacheItemInterface $item      * @param CacheItemInterface $item
行 410: 行 434:
      * @return bool      * @return bool
        True if the item was successfully persisted. False if there was an error.        True if the item was successfully persisted. False if there was an error.
-       アイテムが正常に保持された場合はTrue。 エラーがあった場合はFalse。+       アイテムが正常に保持された場合はTrue。エラーがあった場合はFalse。
      */      */
     public function save(CacheItemInterface $item);     public function save(CacheItemInterface $item);
行 422: 行 446:
        保存するキャッシュアイテム        保存するキャッシュアイテム
      *      *
- 
- 
      * @return bool      * @return bool
        False if the item could not be queued or if a commit was attempted and failed. True otherwise.        False if the item could not be queued or if a commit was attempted and failed. True otherwise.
 +     
        アイテムをキューに入れることができなかった場合、またはコミットが試行されて        アイテムをキューに入れることができなかった場合、またはコミットが試行されて
-       失敗した場合はfalse。 そうでなければ真+       失敗した場合はfalse。そうでなければ真
      */      */
     public function saveDeferred(CacheItemInterface $item);     public function saveDeferred(CacheItemInterface $item);
行 433: 行 456:
     /**     /**
      * Persists any deferred cache items.      * Persists any deferred cache items.
-     * 延されたキャッシュ項目保持します+     延されたキャッシュアイテム永続化します
      *      *
      * @return bool      * @return bool
        True if all not-yet-saved items were successfully saved or there were none. False otherwise.        True if all not-yet-saved items were successfully saved or there were none. False otherwise.
 +     
        まだ保存されていないすべてのアイテムが正常に保存されたか、何もなかった場合はTrue。         まだ保存されていないすべてのアイテムが正常に保存されたか、何もなかった場合はTrue。 
        それ以外の場合はfalse。        それ以外の場合はfalse。
行 447: 行 471:
  
 ==== CacheException ==== ==== CacheException ====
-This exception interface is intended for use when critical errors occur, including but not limited to cache setup such as connecting to a cache server or invalid credentials supplied. 
  
-この例外インターフェイスは、キャッシュサーバーへの接続や提供された無効な資格情報などのキャッシュセットアップを含がこれらに限定されない重大なエラーが発生した場合に使用することを目的としてい+この例外インターフェイスは、重大なエラーが発生した場合に使用することを目的としています。これらのエラーには、キャッシュサーバーへの接続や提供された無効な資格情報などのキャッシュセットアップを含みますこれらに限定されません
  
-Any exception thrown by an Implementing Library MUST implement this interface. +Implementing Library によってスローされすべての例外は、このインターフェイスを実装する必要があります (''MUST'')
- +
-実装ライブラリによってスローされすべての例外は、このインターフェイスを実装する必要があります。+
  
 <code php> <code php>
行 462: 行 483:
 /** /**
  * Exception interface for all exceptions thrown by an Implementing Library.  * Exception interface for all exceptions thrown by an Implementing Library.
- 実装ライブラリによってスローされたすべての例外の例外インターフェース+ Implementing Library によってスローされたすべての例外の Exception インターフェース
  */  */
 interface CacheException interface CacheException
行 483: 行 504:
  * Any time an invalid argument is passed into a method it must throw an  * Any time an invalid argument is passed into a method it must throw an
  * exception class which implements Psr\Cache\InvalidArgumentException.  * exception class which implements Psr\Cache\InvalidArgumentException.
- * 無効な引数がメソッドに渡されるたびに、Psr\Cache\InvalidArgumentExceptionを実装する例外クラスを+ 
 + * 無効な引数がメソッドに渡されるたびに、Psr\Cache\InvalidArgumentException を実装する例外クラスを
  * スローする必要があります。  * スローする必要があります。
  */  */
psr/psr6.1589961877.txt.gz · 最終更新: 2020/05/20 17:04 by y2sunlight