このすみろぐ

とあるWebエンジニアが、技術や趣味について書くブログです。

PhpfastcacheのPsr16Adapterについて

Phpfastcacheは、PHP言語のキャッシュライブラリです。 本記事執筆時点で、スター数は約2200あります。

Slim4で作成した簡易的なウェブサイトにて、キャッシュを使いたかったため選定したのですが、PSR-16について理解する機会があったので記します。

www.phpfastcache.com

github.com

Phpfastcacheは多機能である

Phpfastcacheのインターフェイスを見ると、addTag($tagName) でキャッシュアイテムにタグを付ける機能があったりと、意外と多機能であることがわかります。

また、driverによって保存先を変更することができるため、ファイルキャッシュ以外にも対応しています。

Psr16Adapterではタグ機能が使えなかった

公式サイトのサンプルにあるBasic usageを参考に実装したのですが、途中で前述したタグ機能が使えないことに気づきました。

<?php

use Phpfastcache\Helper\Psr16Adapter;

$defaultDriver = 'Files';
$Psr16Adapter = new Psr16Adapter($defaultDriver);

if(!$Psr16Adapter->has('test-key')){
    // Setter action
    $data = 'lorem ipsum';
    $Psr16Adapter->set('test-key', 'lorem ipsum', 300);// 5 minutes
}else{
    // Getter action
    $data = $Psr16Adapter->get('test-key');
}


/**
* Do your stuff with $data
*/

Psr16Adapterとは?

Basic usageのやり方でタグ機能が使えない理由ですが、Psr16Adapterにありました。

まずPsr16Adapterとは何かという話ですが、これはPS-16に準拠したインターフェイスでキャッシュをやり取りできるアダプターです。

PSR-16 Simple Cache

PSR-16 Simple Cacheですが、これはシンプルな操作でキャッシュをやり取りするための共通インターフェイスです。

つまり、Psr16AdapterでPhpfastcacheのタグ機能が使えない理由は、シンプルなキャッシュインターフェイスを再現するために機能が厳選されているからでした。

www.ritolab.com

あとがき

キャッシュ名の一覧を取得して条件にマッチするキャッシュだけ削除するといった使い方はできないため、柔軟な運用は難しそうです。

できることが少ない弱点こそあるものの、PSR-16 Simple Cacheのインターフェイス自体は直感的でシンプルなため、使いやすいです。 今後も、適材適所で活用していこうと思います。