出力キャッシュ、続きの続き

やっぱりPEAR::Cache_Lite_OutputのAPIに合わせることにした。その方がすっきりするような気がしてきたので。結局最初の実装に戻ったことになるのか。こういうAPI設計はいつも悩む。

  • Moony_Cache::outputStart($id, $lifetime = 3600): bool
    • キャッシュの出力を試みる
    • キャッシュが存在する場合、出力してtrueを返す
    • キャッシュが存在しない場合、出力キャッシュを開始してfalseを返す
  • Moony_Cache::outputEnd(): void
    • 出力キャッシュを終了する
    • 出力バッファの内容をキャッシュファイルに保存する
    • バッファの内容を出力する

アクションクラスの出力内容をキャッシュすることが可能に:

<?php
class Foo extends Moony_Action
{
    function execute()
    {
        if ($this->cache->outputStart('id')) {
            // キャッシュ出力成功、処理終了
            return;
        }

        // 出力キャッシュ中…

        // 処理

        // テンプレート出力
        $this->render();

        // 出力キャッシュ終了、キャッシュファイルに保存/出力
        $this->cache->outputEnd();
    }
}
?>

ちなみに、Zend FrameworkのZend_Cache_Frontend_Outputの実装もほぼ同じだった。