2013-11-03 39 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