このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
psr:psr6 [2020/05/20 16:47] y2sunlight [CacheItemInterface] |
psr:psr6 [2020/08/04 10:18] y2sunlight [定義] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | > 編集中 | ||
- | |||
====== PSR-6: Caching Interface ====== | ====== PSR-6: Caching Interface ====== | ||
--- // | --- // | ||
- | 本章は、若干の補足を加筆してはいるものの単に[[https:// | + | 本章は、若干の補足を加筆してはいるものの単に[[https:// |
+ | |||
+ | 関連記事 | ||
- | ==== 目次 ==== | + | |
- | | + | |
* [[psr: | * [[psr: | ||
* [[psr: | * [[psr: | ||
行 14: | 行 13: | ||
* [[psr: | * [[psr: | ||
* PSR-6: Caching Interface - キャッシングインターフェイス | * PSR-6: Caching Interface - キャッシングインターフェイス | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
----- | ----- | ||
行 47: | 行 56: | ||
* **Calling Library** -- 実際にキャッシュサービスを必要とするライブラリまたはコード。このライブラリは、本規約のインターフェースを実装するキャッシングサービスを利用しますが、その他のキャッシングサービスの実装に関する知識は必要ありません。\\ \\ | * **Calling Library** -- 実際にキャッシュサービスを必要とするライブラリまたはコード。このライブラリは、本規約のインターフェースを実装するキャッシングサービスを利用しますが、その他のキャッシングサービスの実装に関する知識は必要ありません。\\ \\ | ||
- | * **Implementing Library** -- **Calling Library** にキャッシングサービスを提供するために、このライブラリは本規約を実装する責任があります。**Implementing Library** は、**Cache\CacheItemPoolInterface** および | + | * **Implementing Library** -- Calling Library にキャッシングサービスを提供するために、このライブラリは本規約を実装する責任があります。Implementing Library は、Cache\CacheItemPoolInterface および Cache\CacheItemInterface インターフェースを実装するクラスを提供する必要があります ('' |
- | * **TTL** -- アイテムの残存期間(TTL:Time To Live)は、そのアイテムが保存されてから古くなったと見なされるまでの時間のことです。**TTL** は通常、秒単位の時間を表す整数、または | + | * **TTL** -- アイテムの残存期間(TTL:Time To Live)は、そのアイテムが保存されてから古くなったと見なされるまでの時間のことです。TTL は通常、秒単位の時間を表す整数、または DateInterval オブジェクトによって定義されます。\\ \\ |
- | * **有効期限** -- アイテムが古くなったと設定される実際の時間。これは通常、オブジェクトが格納された時刻に | + | * **有効期限** -- アイテムが古くなったと設定される実際の時間。これは通常、オブジェクトが格納された時刻に TTL を加算することで計算されますが、DateTime オブジェクトで明示的に設定することもできます。 300秒の TTL を持つアイテムが 1:30:00 に保存された時、その有効期限は 1:35:00 です。Implementing |
- | * **キー** -- キャッシュされたアイテムを一意に識別する少なくとも1つの文字の文字列。**Implementing | + | * **キー** -- キャッシュされたアイテムを一意に識別する少なくとも1つの文字の文字列。Implementing |
- | * **ヒット** -- キャッシュヒットは、**Calling Library** がキーでアイテムを要求し、そのキーに一致する値が見つかり、その値が期限切れになっておらず、そして他の理由で値が無効でない場合に発生します。**Calling | + | * **ヒット** -- キャッシュヒットは、Calling Library がキーでアイテムを要求し、そのキーに一致する値が見つかり、その値が期限切れになっておらず、そして他の理由で値が無効でない場合に発生します。Calling |
- | * **ミス** -- キャッシュミスは、キャッシュヒットの反対です。キャッシュミスは、**Calling Library** がキーでアイテムを要求し、そのキーの値が見つからない場合、値が見つかったが有効期限が切れている場合、またはその他の理由で値が無効な場合に発生します。 期限切れの値は、常にキャッシュミスと見なされる必要があります ('' | + | * **ミス** -- キャッシュミスは、キャッシュヒットの反対です。キャッシュミスは、Calling Library がキーでアイテムを要求し、そのキーの値が見つからない場合、値が見つかったが有効期限が切れている場合、またはその他の理由で値が無効な場合に発生します。 期限切れの値は、常にキャッシュミスと見なされる必要があります ('' |
- | * **遅延** -- 遅延キャッシュ保存は、キャッシュアイテムがプールによってすぐには保存されない可能性があることを示します。いくつかのストレージエンジンでサポートされている一括設定操作を利用するために、プールオブジェクトは遅延キャッシュアイテムの永続化を遅延させる場合があります ('' | + | * **遅延** -- 遅延キャッシュ保存は、キャッシュアイテムがプールによってすぐには保存されない可能性があることを示します。いくつかのストレージエンジンでサポートされている一括設定操作を利用するために、プールオブジェクトは遅延キャッシュアイテムの永続化を遅延させる場合があります ('' |
\\ | \\ | ||
行 61: | 行 70: | ||
===== データ ===== | ===== データ ===== | ||
- | **Implementing library** の実装は、以下を含むすべてのシリアライズ可能なPHPデータ型をサポートする必要があります ('' | + | Implementing library の実装は、以下を含むすべてのシリアライズ可能なPHPデータ型をサポートする必要があります ('' |
* **Strings** -- PHP互換エンコーディングの任意のサイズの文字列\\ \\ | * **Strings** -- PHP互換エンコーディングの任意のサイズの文字列\\ \\ | ||
行 69: | 行 78: | ||
* **Null** -- 実際のnull値\\ \\ | * **Null** -- 実際のnull値\\ \\ | ||
* **Arrays** -- 添字配列、連想配列 および 任意の深さの多次元配列\\ \\ | * **Arrays** -- 添字配列、連想配列 および 任意の深さの多次元配列\\ \\ | ||
- | * **Object** -- '' | + | * **Object** -- '' |
- | **Implementing Library** に渡されるすべてのデータは、渡されたとおりに返される必要があります ('' | + | Implementing Library に渡されるすべてのデータは、渡されたとおりに返される必要があります ('' |
>'' | >'' | ||
- | なんらかの理由で正確に保存された値を返すことができない場合、**Implementing library** は、破損したデータではなくキャッシュミスで応答する必要があります ('' | + | なんらかの理由で正確に保存された値を返すことができない場合、Implementing library は、破損したデータではなくキャッシュミスで応答する必要があります ('' |
\\ | \\ | ||
行 96: | 行 105: | ||
===== エラー処理 ===== | ===== エラー処理 ===== | ||
- | キャッシングは多くの場合、アプリケーションのパフォーマンスの重要なパーツですが、アプリケーション機能の不可欠なパーツであってはなりません。従って、キャッシュシステムでエラーが発生しても、アプリケーション障害にするべきではありません ('' | + | キャッシングは多くの場合、アプリケーションのパフォーマンスの重要なパーツですが、アプリケーション機能の不可欠なパーツであってはなりません。従って、キャッシュシステムでエラーが発生しても、アプリケーション障害にするべきではありません ('' |
- | **Implementing Library** は、そのようなエラーをログに記録するか、必要に応じて管理者に報告するべきです ('' | + | Implementing Library は、そのようなエラーをログに記録するか、必要に応じて管理者に報告するべきです ('' |
- | **Calling Library** が1つ以上のアイテムの削除、またはプールのクリアを要求する場合、指定されたキーが存在しない場合、エラー状態と見なしてはなりません ('' | + | Calling Library が1つ以上のアイテムの削除、またはプールのクリアを要求する場合、指定されたキーが存在しない場合、エラー状態と見なしてはなりません ('' |
\\ | \\ | ||
行 108: | 行 117: | ||
==== CacheItemInterface ==== | ==== CacheItemInterface ==== | ||
- | **CacheItemInterface** は、キャッシュシステム内のアイテムを定義します。各Itemオブジェクトは特定のキーに関連付けられている必要があります。これは実装システムに従って設定でき、通常は | + | CacheItemInterface は、キャッシュシステム内のアイテムを定義します。各アイテムオブジェクトは特定のキーに関連付けられている必要があります。これは実装システムに従って設定でき、通常は |
- | **Cache\CacheItemInterface** オブジェクトは、キャッシュアイテムの入出庫をカプセル化します。 個々の | + | '' |
- | **Calling Library** は、アイテムオブジェクト自体をインスタンス化してはなりません ('' | + | Calling Library は、アイテムオブジェクト自体をインスタンス化してはなりません ('' |
^メソッド^要約^ | ^メソッド^要約^ | ||
行 258: | 行 267: | ||
==== CacheItemPoolInterface ==== | ==== CacheItemPoolInterface ==== | ||
- | **Cache\CacheItemPoolInterface** の主な目的は、'' | + | 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: | 行 297: | ||
* 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 | ||
| | ||
- | | + | |
* | * | ||
* @throws InvalidArgumentException | * @throws InvalidArgumentException | ||
| | ||
| | ||
+ | | ||
| | ||
| | ||
行 298: | 行 320: | ||
/** | /** | ||
* Returns a traversable set of cache items. | * Returns a traversable set of cache items. | ||
- | | + | |
* | * | ||
* @param string[] $keys | * @param string[] $keys | ||
| | ||
- | | + | |
* | * | ||
* @throws InvalidArgumentException | * @throws InvalidArgumentException | ||
| | ||
| | ||
+ | | ||
| | ||
| | ||
行 315: | 行 338: | ||
| | ||
| | ||
- | | + | * |
- | | + | * |
+ | | ||
| | ||
*/ | */ | ||
行 328: | 行 352: | ||
* This could result in a race condition with CacheItemInterface:: | * This could result in a race condition with CacheItemInterface:: | ||
* such situation use CacheItemInterface:: | * such situation use CacheItemInterface:: | ||
+ | | ||
* 注:このメソッドは、パフォーマンス上の理由から、キャッシュされた値の取得を回避する | * 注:このメソッドは、パフォーマンス上の理由から、キャッシュされた値の取得を回避する | ||
* 場合があります。これにより、CacheItemInterface:: | * 場合があります。これにより、CacheItemInterface:: | ||
- | * このような状況を回避するには、代わりにCacheItemInterface:: | + | * このような状況を回避するには、代わりに CacheItemInterface:: |
* | * | ||
* @param string $key | * @param string $key | ||
行 339: | 行 364: | ||
| | ||
| | ||
+ | | ||
| | ||
| | ||
行 354: | 行 380: | ||
* @return bool | * @return bool | ||
| | ||
- | | + | |
*/ | */ | ||
public function clear(); | public function clear(); | ||
行 362: | 行 388: | ||
* プールからアイテムを削除します | * プールからアイテムを削除します | ||
* | * | ||
- | |||
- | |||
* @param string $key | * @param string $key | ||
| | ||
行 371: | 行 395: | ||
| | ||
| | ||
+ | | ||
| | ||
| | ||
行 376: | 行 401: | ||
* @return bool | * @return bool | ||
| | ||
- | | + | |
*/ | */ | ||
public function deleteItem($key); | public function deleteItem($key); | ||
行 391: | 行 416: | ||
| | ||
| | ||
- | | + | * |
+ | * | ||
| | ||
* | * | ||
行 402: | 行 428: | ||
/** | /** | ||
* Persists a cache item immediately. | * Persists a cache item immediately. | ||
- | * キャッシュアイテムをすぐに保持します | + | * キャッシュアイテムをすぐに永続化します |
* | * | ||
* @param CacheItemInterface $item | * @param CacheItemInterface $item | ||
行 410: | 行 436: | ||
* @return bool | * @return bool | ||
| | ||
- | | + | |
*/ | */ | ||
public function save(CacheItemInterface $item); | public function save(CacheItemInterface $item); | ||
行 422: | 行 448: | ||
| | ||
* | * | ||
- | |||
- | |||
* @return bool | * @return bool | ||
| | ||
+ | | ||
| | ||
- | | + | |
*/ | */ | ||
public function saveDeferred(CacheItemInterface $item); | public function saveDeferred(CacheItemInterface $item); | ||
行 433: | 行 458: | ||
/** | /** | ||
* Persists any deferred cache items. | * Persists any deferred cache items. | ||
- | * 延期されたキャッシュ項目を保持します | + | |
* | * | ||
* @return bool | * @return bool | ||
| | ||
+ | | ||
| | ||
| | ||
行 447: | 行 473: | ||
==== 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 | + | Implementing Library によってスローされるすべての例外は、このインターフェイスを実装する必要があります |
- | + | ||
- | 実装ライブラリによってスローされたすべての例外は、このインターフェイスを実装する必要があります。 | + | |
<code php> | <code php> | ||
行 462: | 行 485: | ||
/** | /** | ||
* Exception interface for all exceptions thrown by an Implementing Library. | * Exception interface for all exceptions thrown by an Implementing Library. | ||
- | | + | |
*/ | */ | ||
interface CacheException | interface CacheException | ||
行 483: | 行 506: | ||
* 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 を実装する例外クラスを | ||
* スローする必要があります。 | * スローする必要があります。 | ||
*/ | */ |