FuelPHPのキャッシュライブラリ – config以外でストレージを設定する方法


configの設定以外でのキャッシュの使用方法

今までは、configの設定に従ってキャッシュを使用してきていましたが、

今回はconfigの設定とは異なる設定で、キャッシュを使用する方法です。

以下が、configの設定とは異なる内容での使用方法の例です。

コントローラー

  public function action_forge()
  {
    // ここで使用するストレージ名と設定内容を記述する、
    // ここで設定しなかった、項目についてはcacheのconfigファイルの内容で設定される。
    // 「$config = 'file';」のように、ストレージ名のみを文字列で渡して使用する事も可能
    $config = array(
        'driver' => 'file',
        'expiration' => null,
        'file' => array(
          'path' => APPPATH.'cache_forge'.DS,
        ),
    );
    // String
    $cache = Cache::forge('string', $config);
    $cache->set('cache test');
    $data['string'] = $cache->get();

    // Array
    $a = array(1, 2, array('key' => 'value'));
    $cache = Cache::forge('array', $config);
    $cache->set($a);
    $data['array'] = $cache->get();

    // Object
    $o = new Library_Test();
    $cache = Cache::forge('object', $config);
    $cache->set($o);
    $data['object'] = $cache->get();

    return Response::forge(View::forge('cache/forge', $data));
  }

(configの設定は、fileストレージの動作を確認した時と同様にしてあります)

14,20,26行目のように、Cacheクラスのforgeメソッドを使用してCacheクラスのインスタンスを生成すると、

第2引数で渡したconfigの設定内容でキャッシュストレージに接続に行きます。

動作後のデータを確認すると、ちゃんとキャシュの情報は「cache」ではなく「cache_forge」フォルダに生成されています。

第1引数はキャッシュのキーです。

なんとなく違和感を感じる設定だな…。

キャッシュクラスのインスタンスを生成する時に使用するキー値を設定しているので、すごく違和感があります。なぜ「get」「set」などのメソッドの引数に、キャッシュのキーを取るようになぜ設計されていないのかすごく不思議です。

ちなみにコメントにも記述していますが、第2引数のconfigは配列でなく、ストレージ名を文字列で渡しても大丈夫です。

その場合、設定されていないconfigの情報はcacheのconfigから取得するようになります。

次回は、Redisのストレージを使用している時に気がついた、cacheのsectionについてまとめてみたいと思います。

関連する記事:

Facebookでコメント

コメント

  1. コメント 0

  1. トラックバック 0

*

return top