2

ビューのキャッシュについて質問があります。次のコードブロックがあるとします。

<?php
    class View {          
        public function render ( $template , $path = null ) { } 
            // ...  
        }

これは私の「MainView」であり、「ClientsView」などの他のすべてのビューでクラスが拡張されています。

しかし、私は、キャッシュを介して、降伏の要求をインターセプトする方法を実装したかったのです。このパラメーターをrenderメソッドに渡すときに、キャッシュに言います。キャッシュされたファイルと各キャッシュの有効期限が切れるまでの残り時間を保存する「ViewCacheStorage」、メインビューを振る必要なしにこれを行うための最良の方法は何ですか?

4

1 に答える 1

1

1つの簡単なオプション:

class CachingView extends View {

    protected $cacheStorage;

    public function render($template, $path = null) {
        if (! $this->getCacheStorage()->has($template)) {
           $this->getCacheStorage()->store(parent::render($template, $path));
        }

        return $this->getCacheStorage()->get($template);
    }

    public function getCacheStorage() {
        if (empty($this->cacheStorage)) {
            $this->cacheStorage = new ViewCacheStorage();
        }
        return $this->cacheStorage;
    }
}

そして、他のすべてのビューはCachingViewから拡張されます。

于 2011-12-16T22:36:15.430 に答える