Ground Sunlight

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

ユーザ用ツール

サイト用ツール


psr:psr16

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
psr:psr16 [2020/08/04 16:00]
y2sunlight
psr:psr16 [2020/09/01 11:54] (現在)
tanaka [PSR-16: Common Interface for Caching Libraries]
行 22: 行 22:
   * [[psr:psr17|PSR-17: HTTP Factories - HTTPファクトリー]]    * [[psr:psr17|PSR-17: HTTP Factories - HTTPファクトリー]] 
   * [[psr:psr18|PSR-18: HTTP Client - HTTPクライアント]]    * [[psr:psr18|PSR-18: HTTP Client - HTTPクライアント]] 
-  * [[psr:psr19|PSR-19: PHPDoc tags - PHPDocタグ]] +  * [[psr:psr19|PSR-19: PHPDoc tags(Draft) - PHPDocタグ]] 
  
 ----- -----
行 40: 行 40:
 > ''SHOULD NOT'' --- 推奨できない(但し、許可できる特定の正当な理由が存在するかもしれない) > ''SHOULD NOT'' --- 推奨できない(但し、許可できる特定の正当な理由が存在するかもしれない)
 > ''MAY'', ''OPTIONAL'' --- オプション > ''MAY'', ''OPTIONAL'' --- オプション
- 
-The final implementations MAY decorate the objects with more functionality than the one proposed but they MUST implement the indicated interfaces/functionality first. 
  
 最終的な実装は、提案されたものよりも多くの機能でオブジェクトを装飾してもよい( ''MAY'' )が、指定されたインターフェース/機能を最初に実装しなければならない( ''MUST'' )。 最終的な実装は、提案されたものよりも多くの機能でオブジェクトを装飾してもよい( ''MAY'' )が、指定されたインターフェース/機能を最初に実装しなければならない( ''MUST'' )。
行 49: 行 47:
 ===== 1.1 はじめに ===== ===== 1.1 はじめに =====
  
-Caching is a common way to improve the performance of any project, making caching libraries one of the most common features of many frameworks and libraries. Interoperability at this level means libraries can drop their own caching implementations and easily rely on the one given to them by the framework, or another dedicated cache library.+キャッシングは、プロジェクトのパフォーマンスを向上させる一般的な方法であり、キャッシングライブラリは、多くのフレームワークとライブラリの最も一般的な機能の1つになっています。このレベルの相互運用性は、ライブラリが独自のキャッシング実装を止め、フレームワークから提供された実装または別の専用キャッシュライブラリに簡単に依存できることを意味します。
  
-キャッシングは、プロジェクトのパフォーマンスを向上させる一般的な方法であり、キャッシングライブラリは、多くのフレームワークとライブラリの最も一般的な機能の1つになっています。このレベルの相互運用性は、ライブラリが独自のキャッシング実装を止め、フレームワークから提供された実装または別の専用キャッシュライブラリに容易に頼れることを意味します。 +PSR-6はこの問題をすでに解決していますが、最も簡単なユースケースに必要なものについては、かなり形式的で冗長な方法で行われています。このより簡単なアプローチは、一般的なケースのために、標準化され、また合理化されたインターフェースの構築を目的としています。これは、PSR-6とは独立していますが、PSR-6との互換性をできるだけ簡単にするように設計されています。
- +
-PSR-6 solves this problem already, but in a rather formal and verbose way for what the most simple use cases need. This simpler approach aims to build a standardized streamlined interface for common cases. It is independent of PSR-6 but has been designed to make compatibility with PSR-6 as straightforward as possible. +
- +
-PSR-6はこの問題をすでに解決していますが、最も簡単なユースケースに必要なものについては、かなり形式的で冗長な方法で行われています。このより簡単なアプローチは、一般的なケースのため標準化された合理化されたインターフェースの構築を目的としています。これは、PSR-6とは独立していますが、PSR-6との互換性をできるだけ簡単にするように設計されています。+
  
 \\ \\
行 61: 行 55:
 ===== 1.2 定義 ===== ===== 1.2 定義 =====
  
-Definitions for Calling Library, Implementing Library, TTL, Expiration and Key are copied from PSR-6 as the same assumptions are true. +ライブラリの呼び出し(Calling Library)、ライブラリの実装(Implementing Library)、TTL、有効期限、キーの定義は、同じ仮定が当てはまるため、PSR-6からコピーした
- +
-ライブラリの呼び出し、ライブラリの実装、TTL、有効期限、キーの定義は、同じ仮定が当てはまるため、PSR-6からコピーされ+
  
   * **Calling Library** -- 実際にキャッシュサービスを必要とするライブラリまたはコード。このライブラリは、本規約のインターフェースを実装するキャッシングサービスを利用しますが、その他のキャッシングサービスの実装に関する知識は必要ありません。\\ \\    * **Calling Library** -- 実際にキャッシュサービスを必要とするライブラリまたはコード。このライブラリは、本規約のインターフェースを実装するキャッシングサービスを利用しますが、その他のキャッシングサービスの実装に関する知識は必要ありません。\\ \\ 
-  * **Implementing Library** -- Calling Library にキャッシングサービスを提供するために、このライブラリは本規約を実装する責任があります。Implementing Library は、Psr\SimpleCache\CacheInterface インターフェースを実装するクラスを提供する必要があります (''MUST'')。Implementing Libraries では、1秒単位で 以下に説明するように、最小限のTTL (Time To Live) 機能をサポートする必要があります (''MUST'')。\\ \\ +  * **Implementing Library** -- Calling Library にキャッシングサービスを提供するために、このライブラリは本規約を実装する責任があります。Implementing Library は、Psr\SimpleCache\CacheInterface インターフェースを実装するクラスを提供する必要があります ( ''MUST'' )。Implementing Libraries では、1秒単位で 以下に説明するように、最小限のTTL (Time To Live) 機能をサポートする必要があります ( ''MUST'' )。\\ \\ 
   * **TTL** -- アイテムの残存期間(TTL:Time To Live)は、そのアイテムが保存されてから古くなったと見なされるまでの時間のことです。TTL は通常、秒単位の時間を表す整数、または DateInterval オブジェクトによって定義されます。\\ \\    * **TTL** -- アイテムの残存期間(TTL:Time To Live)は、そのアイテムが保存されてから古くなったと見なされるまでの時間のことです。TTL は通常、秒単位の時間を表す整数、または DateInterval オブジェクトによって定義されます。\\ \\ 
-  * Expiration - The actual time when an item is set to go stale. This is calculated by adding the TTL to the time when an object is stored.\\ \\ **有効期限** -- アイテムが古くなったとに設定された実際の時間。 これは、オブジェクトが格納された時刻にTTLを加算することで計算されます。\\ \\ 300秒の TTL を持つアイテムが 1:30:00 に保存された時、その有効期限は 1:35:00 です。\\ \\ Implementing Library は、要求された有効期限の前にアイテムを期限切れにすることができます (''MAY'')。ただし、有効期限に達したら、アイテムは期限切れとして扱う必要があります (''MUST'')。Calling Library はアイテムの保存を要求しますが、有効期限を指定しない場合、または有効期限または TTL を null に指定した場合、Implementing Library は、構成されたデフォルトの期間を使用してもかまいません (''MAY'')。 デフォルトの期間が設定されていない場合、Implementing Library は、それを、アイテムを永久に(または基本となる実装がサポートしている限りの間)キャッシュする要求として、それを解釈する必要があります (''MUST'')。\\ \\ If a negative or zero TTL is provided, the item MUST be deleted from the cache if it exists, as it is expired already. \\ \\ 負またはゼロのTTLが提供されている場合、アイテムは既に期限切れであるため、存在する場合はキャッシュから削除する必要があります( ''MUST'' )。\\ \\ +  * **有効期限** -- アイテムが古くなったとに設定された実際の時間。 これは、オブジェクトが格納された時刻にTTLを加算することで計算されます。\\ \\ 300秒の TTL を持つアイテムが 1:30:00 に保存された時、その有効期限は 1:35:00 です。\\ \\ Implementing Library は、要求された有効期限の前にアイテムを期限切れにすることができます ( ''MAY'' )。ただし、有効期限に達したら、アイテムは期限切れとして扱う必要があります ( ''MUST'' )。Calling Library はアイテムの保存を要求しますが、有効期限を指定しない場合、または有効期限または TTL を null に指定した場合、Implementing Library は、構成されたデフォルトの期間を使用してもかまいません ( ''MAY'' )。 デフォルトの期間が設定されていない場合、Implementing Library は、それを、アイテムを永久に(または基本となる実装がサポートしている限りの間)キャッシュする要求として、それを解釈する必要があります ( ''MUST'' )。\\ \\ 負またはゼロのTTLが提供されている場合、アイテムは既に期限切れであるため、存在する場合はキャッシュから削除する必要があります( ''MUST'' )。\\ \\ 
-  * **キー** -- キャッシュされたアイテムを一意に識別する少なくとも1つの文字の文字列。Implementing Library は UTF-8 エンコードで最大 64 文字の長さで任意の順序の文字、''A 〜 Z''、''a 〜 z''、''0 〜 9''、アンダースコア(''_'')、およびピリオド(''.'') の文字で構成されるキーをサポートする必要があります (''MUST'')。Implementing Library は、追加の文字とエンコーディング または より長い文字長をサポートする場合がありますが (''MAY'')、少なくともその最小値をサポートしなければなりません(''MUST'')。ライブラリは、必要に応じてキー文字列の独自のエスケープに責任がありますが、変更されていない元のキー文字列を返すことができる必要があります (''MUST'')。 次の文字は、将来の拡張のために予約されており、Implementing Library によってサポートしてはなりません (''MUST NOT''):''{}()/\@:'' \\ \\  +  * **キー** -- キャッシュされたアイテムを一意に識別する少なくとも1つの文字の文字列。Implementing Library は UTF-8 エンコードで最大 64 文字の長さで任意の順序の文字、''A 〜 Z''、''a 〜 z''、''0 〜 9''、アンダースコア(''_'')、およびピリオド(''.'') の文字で構成されるキーをサポートする必要があります ( ''MUST'' )。Implementing Library は、追加の文字とエンコーディング または より長い文字長をサポートする場合がありますが ( ''MAY'' )、少なくともその最小値をサポートしなければなりません( ''MUST'' )。ライブラリは、必要に応じてキー文字列の独自のエスケープに責任がありますが、変更されていない元のキー文字列を返すことができる必要があります ( ''MUST'' )。 次の文字は、将来の拡張のために予約されており、Implementing Library によってサポートしてはなりません ( ''MUST NOT'' ):''{}()/\@:'' \\ \\  
-  * Cache - An object that implements the Psr\SimpleCache\CacheInterface interface.\\ \\ **キャッシュ** -- Psr\SimpleCache\CacheInterfaceインターフェースを実装するオブジェクト。\\ \\ +  * **キャッシュミス** -- キャッシュミスはnullを返すため、nullを格納したか否かは検出できません。これが、PSR-6の仮定から主としてれている点です。
-  * Cache Misses - A cache miss will return null and therefore detecting if one stored null is not possible. This is the main deviation from PSR-6’s assumptions.\\ \\ **キャッシュミス** -- キャッシュミスはnullを返すため、nullを格納したか否かは検出できません。これが、PSR-6の仮定からです。+
  
  
行 77: 行 68:
  
 ===== 1.3 キャッシュ ===== ===== 1.3 キャッシュ =====
- 
-Implementations MAY provide a mechanism for a user to specify a default TTL if one is not specified for a specific cache item. If no user-specified default is provided implementations MUST default to the maximum legal value allowed by the underlying implementation. If the underlying implementation does not support TTL, the user-specified TTL MUST be silently ignored. 
  
 特定のキャッシュアイテムにデフォルトのTTLが指定されていない場合に、実装は、ユーザーがデフォルトのTTLを指定するためのメカニズムを提供することがあります( ''MAY'' )。 ユーザー指定のデフォルトが提供されない場合、実装は、基本となる実装で許可されている最大の正当な値にデフォルト設定する必要があります( ''MUST'' )。 基本となる実装がTTLをサポートしない場合、ユーザーが指定したTTLは黙って無視されなければなりません( ''MUST'' )。 特定のキャッシュアイテムにデフォルトのTTLが指定されていない場合に、実装は、ユーザーがデフォルトのTTLを指定するためのメカニズムを提供することがあります( ''MAY'' )。 ユーザー指定のデフォルトが提供されない場合、実装は、基本となる実装で許可されている最大の正当な値にデフォルト設定する必要があります( ''MUST'' )。 基本となる実装がTTLをサポートしない場合、ユーザーが指定したTTLは黙って無視されなければなりません( ''MUST'' )。
行 96: 行 85:
   * **Object** -- ''$o == unserialize(serialize($o))'' のような、無損失性のシリアライゼーションとデシリアライゼーションをサポートするオブジェクト。オブジェクトは、PHPの Serializable インターフェース、''<nowiki>__</nowiki>sleep()'' または''<nowiki>__</nowiki>wakeup()'' マジックメソッド、または必要に応じて同様の言語機能を活用する場合があります(''MAY'')   * **Object** -- ''$o == unserialize(serialize($o))'' のような、無損失性のシリアライゼーションとデシリアライゼーションをサポートするオブジェクト。オブジェクトは、PHPの Serializable インターフェース、''<nowiki>__</nowiki>sleep()'' または''<nowiki>__</nowiki>wakeup()'' マジックメソッド、または必要に応じて同様の言語機能を活用する場合があります(''MAY'')
  
-Implementing Library に渡されるすべてのデータは、渡されたとおりに返される必要があります (''MUST'')。それには変数の型も含まれます。つまり、(int)5 が保存された値である場合、(string)5 を返すのはエラーです。ライブラリの実装では、PHPの''serialize()'' / ''unserialize()'' 関数を内部で使用できますが (''MAY'')、必須ではありません。それらとの互換性は、許すことができるオブジェクト値の基準として単に使用されます。+Implementing Library に渡されるすべてのデータは、渡されたとおりに返される必要があります ( ''MUST'' )。それには変数の型も含まれます。つまり、(int)5 が保存された値である場合、(string)5 を返すのはエラーです。ライブラリの実装では、PHPの''serialize()'' / ''unserialize()'' 関数を内部で使用できますが ( ''MAY'' )、必須ではありません。それらとの互換性は、許すことができるオブジェクト値の基準として単に使用されます。
  
-なんらかの理由で正確に保存された値を返すことができない場合、Implementing library は、破損したデータではなくキャッシュミスで応答する必要があります (''MUST'')。+なんらかの理由で正確に保存された値を返すことができない場合、Implementing library は、破損したデータではなくキャッシュミスで応答する必要があります ( ''MUST'' )。
  
 \\ \\
  
 ===== 2.1 CacheInterface ===== ===== 2.1 CacheInterface =====
- 
-The cache interface defines the most basic operations on a collection of cache-entries, which entails basic reading, writing and deleting individual cache items. 
  
 キャッシュインターフェースは、キャッシュエントリのコレクションに対する最も基本的な操作を定義します。これには、個々のキャッシュアイテムの基本的な読み取り、書き込み、削除が伴います。 キャッシュインターフェースは、キャッシュエントリのコレクションに対する最も基本的な操作を定義します。これには、個々のキャッシュアイテムの基本的な読み取り、書き込み、削除が伴います。
  
-In addition, it has methods for dealing with multiple sets of cache entries such as writing, reading or deleting multiple cache entries at a time. This is useful when you have lots of cache reads/writes to perform, and lets you perform your operations in a single call to the cache server cutting down latency times dramatically.+さらに、キャッシュエントリの複数のセットを処理するメソッドがあります。これらには、一度に複数のキャッシュエントリの書き込み、読み取り、削除などがあります。これは、実行するキャッシュの読み取り/書き込みが多い場合に役立ち、キャッシュサーバーへの1回の呼び出しで操作を実行し、待ち時間を大幅に短縮できます。
  
-さらに、キャッシュトリ複数のセット処理するメソッドがあります。は、一度複数キャッシュエントリの書き込み、読み取り、削除があります。これは実行するキャッシュの読み取り/書き込みが多い場合ちます。キャッシュサーバーへの1回の呼び出しで操作を実行して、待ち時間を大幅に短縮できます。+CacheInterfaceのインスタンスは、キャッシュアイテムの単一のコレクショに対応し、それは、単一キー名前空間持っています。またそれは、PSR-6の「プール」相当します。異なるCacheInterfaceスタンスは同じデータスアによってサポートされる場合がありますが( ''MAY'' )論理的立している必要があります( ''MUST'' )
  
-An instance of CacheInterface corresponds to a single collection of cache items with a single key namespace, and is equivalent to a “Pool” in PSR-6. Different CacheInterface instances MAY be backed by the same datastore, but MUST be logically independent. +>''上記の原文'' 
- +>An instance of CacheInterface corresponds to a single collection of cache items with a single key namespace, and is equivalent to a “Pool” in PSR-6. Different CacheInterface instances MAY be backed by the same datastore, but MUST be logically independent.
-CacheInterfaceのインスタンスは、キャッシュアイテムの単一のコレクションに対応し、それは、単一のキー名前空間を持っています。またそれは、PSR-6の「プール」に相当します。異なるCacheInterfaceのインスタンスは同じデータストアによってサポートされる場合がありますが( ''MAY'' )、論理的に独立している必要があります( ''MUST'' )。+
  
 <code php CacheInterface.php> <code php CacheInterface.php>
psr/psr16.1596524400.txt.gz · 最終更新: 2020/08/04 16:00 by y2sunlight