読者です 読者をやめる 読者になる 読者になる

カラクリサイクル

『輝かしい青春』なんて無かった人の雑記

Catalyst::Plugin::CacheのCacheのsetupの流れ

Development Knowledge Diary

Catalyst::Plugin::Cacheから抜粋。

->setup
    ->NEXT::setup
    ->setup_cache_backends
        ->NEXT::setup_cache_backends
        ->setup_generic_cache_backend
            if ( $class = delete $config{'class'} ) {
                ->setup_cache_backend_by_class
                    ->register_cache_backend
            }
            elsif ( $store = delete $config{'store'}
                 || $app->default_cache_store  ) {
                ->setup_${store}_cache_backends
                    ->register_cache_backend
            \}

大体こんな感じ。

Cacheに使えるobjectは->can('get')->can('set')->can('remove')がすべて真になるオブジェクト。

あと->setup_cache_backend_by_classは指定したクラスのインスタンスを作るんだけど、->setup_generic_cache_backendからsetup_cache_backend_by_class呼び出すことろでhash referenceを渡してるっぽいので、設定ファイルで指定できるクラスはコンストラクタの引数にhash referenceが指定できるものに限られてくる。まあこのあたり書き換えちゃえばなんとかなるだろうけど。

にしてもCatalyst::Plugin::Cacheのコードは読みづらいw