Ground Sunlight

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

ユーザ用ツール

サイト用ツール


サイドバー

メインメニュー

XAMPP アレンジ

IED

WSL2

道具箱

リポジトリ編

フレームワーク編

公開ソフトウェア

メタ
リンク


このページへのアクセス
今日: 1 / 昨日: 1
総計: 477

psr:psr16

文書の過去の版を表示しています。


編集中

PSR-16: Common Interface for Caching Libraries

y2sunlight 2020-07-28

本章は、若干の補足を加筆してはいるものの単にPSRのサイトを日本語に翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。

関連記事


PSR-16: キャッシングライブラリのための共通インターフェース

原文より翻訳 PSR-16: Common Interface for Caching Libraries 2020-08-04 現在

This document describes a simple yet extensible interface for a cache item and a cache driver.

このドキュメントでは、キャッシュアイテムとキャッシュドライバーのシンプルで拡張可能なインターフェースについて説明します。

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.

このドキュメントのキーワード MUST , MUST NOT , REQUIRED , SHALL , SHALL NOT , SHOULD , SHOULD NOT , RECOMMENDED , MAY 及び OPTIONAL は、 RFC 2119で説明されているように解釈して下さい。

RFC 2119の説明
MUST, REQUIRED, SHALL — 絶対必要
MUST NOT, SHALL NOT — 絶対禁止
SHOULD, RECOMMENDED — 推奨(但し、無視できる特定の正当な理由が存在するかもしれない)
SHOULD NOT — 推奨できない(但し、許可できる特定の正当な理由が存在するかもしれない)
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 )。


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つになっています。このレベルの相互運用性は、ライブラリが独自のキャッシング実装を止め、フレームワークから提供された実装または別の専用キャッシュライブラリに容易に頼れることを意味します。

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との互換性をできるだけ簡単にするように設計されています。


1.2 定義

Definitions for Calling Library, Implementing Library, TTL, Expiration and Key are copied from PSR-6 as the same assumptions are true.

ライブラリの呼び出し、ライブラリの実装、TTL、有効期限、キーの定義は、同じ仮定が当てはまるため、PSR-6からコピーされます。

  • Calling Library – 実際にキャッシュサービスを必要とするライブラリまたはコード。このライブラリは、本規約のインターフェースを実装するキャッシングサービスを利用しますが、その他のキャッシングサービスの実装に関する知識は必要ありません。

  • Implementing Library - This library is responsible for implementing this standard in order to provide caching services to any Calling Library. The Implementing Library MUST provide a class implementing the Psr\SimpleCache\CacheInterface interface. Implementing Libraries MUST support at minimum TTL functionality as described below with whole-second granularity.

    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 オブジェクトによって定義されます。

  • 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 )。

  • キー – キャッシュされたアイテムを一意に識別する少なくとも1つの文字の文字列。Implementing Library は UTF-8 エンコードで最大 64 文字の長さで任意の順序の文字、A 〜 Za 〜 z0 〜 9、アンダースコア(_)、およびピリオド(.) の文字で構成されるキーをサポートする必要があります (MUST)。Implementing Library は、追加の文字とエンコーディング または より長い文字長をサポートする場合がありますが (MAY)、少なくともその最小値をサポートしなければなりません(MUST)。ライブラリは、必要に応じてキー文字列の独自のエスケープに責任がありますが、変更されていない元のキー文字列を返すことができる必要があります (MUST)。 次の文字は、将来の拡張のために予約されており、Implementing Library によってサポートしてはなりません (MUST NOT):{}()/\@:

  • Cache - An object that implements the Psr\SimpleCache\CacheInterface interface.

    キャッシュ – Psr\SimpleCache\CacheInterfaceインターフェースを実装するオブジェクト。

  • 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の仮定からの主な逸脱です。


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 )。


1.4 データ

Implementing library の実装は、以下を含むすべてのシリアライズ可能なPHPデータ型をサポートする必要があります (MUST)。

  • Strings – PHP互換エンコーディングの任意のサイズの文字列

  • Integers – 符号付きの64ビットまでのPHPでサポートされている任意のサイズのすべての整数

  • Floats – すべての符号付き浮動小数点値

  • Boolean – TrueおよびFalse

  • Null - The null value (although it will not be distinguishable from a cache miss when reading it back out).

    Null – null値(ただし、読み戻すときはキャッシュミスとは区別されません)

  • Arrays – 添字配列、連想配列 および 任意の深さの多次元配列

  • Object$o == unserialize(serialize($o)) のような、無損失性のシリアライゼーションとデシリアライゼーションをサポートするオブジェクト。オブジェクトは、PHPの Serializable インターフェース、__sleep() または__wakeup() マジックメソッド、または必要に応じて同様の言語機能を活用する場合があります(MAY)

Implementing Library に渡されるすべてのデータは、渡されたとおりに返される必要があります (MUST)。それには変数の型も含まれます。つまり、(int)5 が保存された値である場合、(string)5 を返すのはエラーです。ライブラリの実装では、PHPのserialize() / unserialize() 関数を内部で使用できますが (MAY)、必須ではありません。それらとの互換性は、許すことができるオブジェクト値の基準として単に使用されます。

なんらかの理由で正確に保存された値を返すことができない場合、Implementing library は、破損したデータではなくキャッシュミスで応答する必要があります (MUST)。


2.1 CacheInterface

TODO


2.2 CacheException

TODO


2.3 InvalidArgumentException

TODO


コメント

コメントを入力. Wiki文法が有効です:
 
psr/psr16.1596512674.txt.gz · 最終更新: 2020/08/04 12:44 by tanaka