2013-11-03 41 views
1

如何將Zend Cache Factory集成到Symfony 2中,以便我可以輕鬆地在我的config.yml中更改緩存適配器?如何將Zend Cache StorageFactory集成到Symfony 2 DI容器中?

這是使用工廠獲取適配器的傳統方式。

use Zend\Cache\StorageFactory; 

$cache = StorageFactory::factory(array(
    'adapter' => array(
     'name' => 'apc', 
     'options' => array('ttl' => 3600), 
    ), 
    'plugins' => array(
     'exception_handler' => array('throw_exceptions' => false), 
    ), 
)); 

來源:http://framework.zend.com/manual/2.2/en/modules/zend.cache.storage.adapter.html

由於Zend的緩存庫已經由作曲家安裝。將其集成到DI容器中的最佳方法是什麼,以便我可以在應用程序的任何位置配置緩存?

$this->get('my_cache.blog') 

回答

0

試試這個。 (請記住有可能是與YAML格式的問題)

services: 
    my_cache.blog: 
     class:   Zend\Cache\Storage\Adapter 
     factory_class: Zend\Cache\StorageFactory 
     factory_method: factory 
     arguments: 
      - 
       adapter: 
        name: apc 
        options: { ttl: 3600 } 
       plugins: 
        exception_handler: { throw_exceptions: false } 

下面是關於using factories in Symfony's Dependency Injection component更多信息。

+0

Zend \ Cache \ Storage \ Adapter類不存在。只有抽象的Zend \ Cache \ Storage \ Adapter \ AbstractAdapter,Symfony DI不接受它 – dextervip

+0

@dextervip對不起,我在看文檔,並認爲它是一個類,我現在看到你的困境。如果Symfony不讓你指定一個接口,比如'Zend \ Cache \ Storage \ StorageInterface',我會感到驚訝。我想知道'class'選項是否可以省略? –

+0

它不接受接口也因爲它試圖實例化,我不能省略類,否則我會得到一個異常說它缺少類。 :( – dextervip