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についてまとめてみたいと思います。
関連する記事:
- FuelPHPのキャッシュライブラリ – APC編
- FuelPHPのキャッシュライブラリ – File編
- FuelPHPのキャッシュライブラリ – redis編
- FuelPHPのキャッシュライブラリ – memcached編
- FuelPHPでのキャッシュライブラリの調査
コメント 0