現在、サードパーティのAPIにHTTPリクエストを行うため、キャッシュソリューションのメリットが大きい小さなクラスを開発しています。カスタムクラスまたはライブラリにサードパーティのキャッシュを実装する方法
私は実際に特定の事前実装のキャッシュソリューションにユーザーを強制したくありません。私はまた、使い方を本当にシンプルにしたい。
代わりに、クラスのユーザーに使用するキャッシングメカニズムを決定させることをお勧めします。
この場合、ベストプラクティスの実装は何ですか?
私は、単純なゲッター/セッターメソッドが適切だろうと思った:
$class->retrieveFromCache(function() {
return UserDefinedCache::get('user_defined_key');
});
$class->writeToCache(function($value) {
UserDefinedCache::set('user_defined_key', $value);
});
これは彼または彼女が望んでいるものは何でもキャッシュを使用するようにユーザーを支援します。実装と使用状況を簡単に保ちます。
クラスに加えて、クッキーから値を格納して取得する必要もあります。同様の方法でアクセサーを実装します。したがって、ユーザーは自分の環境またはフレームワークに最も適したCookieメカニズムを自由に使用できます。
$class->getCookieValue(function() {
return $_COOKIE['custom_name'];
});
$class->setCookieValue(function($value) {
setcookie('custom_name', $value);
});
これは実装に適していますか?私が見落としたいくつかの欠点はありますか?または、より良い解決策がありますか?
多分、私ははっきりとは分かりませんでした。私はそれを簡単にしたいと思います。例えば。私のライブラリのユーザは自分のmysqlデータベースをキャッシュとして使うこともできます。私は実際にキャッシング・インターフェースを適応させることを強く求めているわけではありません。私はまた、サードパーティのキャッシュ依存関係で私のライブラリを吹き飛ばしたくありません。 クッキーについて:これらはキャッシュとして使用しないでください。ライブラリは、エンドユーザのクッキーに何らかのデータを書き込む必要があります。私は実際には、クッキーヘッダーを追加することによって、図書館が使用されるプロジェクトを台無しにしたくはありません。この動作は、ライブラリのユーザーが制御する必要があります。 –
インターフェイスを実装せず、異なるキャッシュバックエンドを許可したい場合は、それを強制することは絶対に意味がありません。シンプルではあるが一般的なパターンに従わない場合は、各キャッシュのクラスを作成し、ゲッターとセッターを実装するだけです。それ以外の場合、私はあなたの問題を取得しません。 – burzum