Born Too Late

Yuya's old tech blog.

PHP 用キャッシュライブラリ Cache_Casual をリリース

2011-08-14 01:58:00

Cache_Lite は未だに PHP4 なコードであんまりだし, Zend_Cache は依存関係がめんどくさそうなので, 外部ライブラリに依存しないものを作ってみました.

Github
Openpear

使い方

Cache_Casual オブジェクトは ArrayAccess インターフェイスを実装しており, 連想配列のように操作することができるので, かなりカジュアルだと思います.

カスタムキャッシュコンテナ

上記の例では, キャッシュコンテナとしてファイルを利用しています.
キャッシュコンテナは Dependency Injection (依存性の注入) により Cache_Casual オブジェクトに差し込むことができるので, Cache_Casual_ContainerAbstract クラスを継承し, Cache_Casual_ContainerInterface インターフェイスのメソッドを実装するだけで簡単につくることができます.

例としては, Cache_Casual_Container_Memory が一番シンプルでわかりやすいと思います.

今の自分の用途としてはファイルコンテナで充分なのでまだ作ってはいませんが, 例えば PDO 用のコンテナを書けば RDB にデータを格納することもできますし, memcached 用のコンテナを書けば同様のインターフェイスを持った KVS にデータを格納することもできると思います.

制限

これは各コンテナに依存する問題ですが, 値が serialize/unserialize できる必要があります.
File コンテナは serialize() してファイルに書き込んでいます.

個人的には今の所配列ぐらいしか保存する用途が無いので全然試してはいないですが, 多分循環参照を持ったオブジェクトとかは格納できないと思います.

テストについて

ユニットテストにはいつも通り PHPUnit を使っていますが, 今回は初めての試みとして, vfsStream というファイルシステムのモックライブラリを使用しています.
これは PHP のストリームラッパーという仕組みを利用して, 実際のファイルシステム上に操作を行うことなく, ファイルを用いた処理をテストすることができるというものです.
とても便利なので, これについては後日ブログにまとめる予定です.