configの設定以外でのキャッシュの使用方法
今までは、configの設定に従ってキャッシュを使用してきていましたが、
今回はconfigの設定とは異なる設定で、キャッシュを使用する方法です。
以下が、configの設定とは異なる内容での使用方法の例です。
コントローラー
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | public function action_forge()
{
$config = array (
'driver' => 'file' ,
'expiration' => null,
'file' => array (
'path' => APPPATH. 'cache_forge' .DS,
),
);
$cache = Cache::forge( 'string' , $config );
$cache ->set( 'cache test' );
$data [ 'string' ] = $cache ->get();
$a = array (1, 2, array ( 'key' => 'value' ));
$cache = Cache::forge( 'array' , $config );
$cache ->set( $a );
$data [ 'array' ] = $cache ->get();
$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についてまとめてみたいと思います。