0

我想我遇到了一个思维障碍,我就是无法摆脱自己的方式来解决这种情况。

在我继续之前,我的目标之一(如果可能的话)是'config_cache_enabled' => true在我的application.config.php文件中进行设置,以便我的配置全部合并在一起,同时能够缓存翻译。

在我的module.config.php我有以下内容:

'translator'  => array(
    'locale'                    => 'en',
    'translation_file_patterns' => array(
        array(
            'type'        => 'gettext',
            'base_dir'    => __DIR__ . '/../language',
            'pattern'     => '%s.mo',
            'text_domain' => 'mytextdomain'
        )
    )
)

翻译按预期工作。现在我想添加缓存支持,所以我将前面的示例更改为:

'translator'  => array(
    'locale'                    => 'en',
    'translation_file_patterns' => array(
        array(
            'type'        => 'gettext',
            'base_dir'    => __DIR__ . '/../language',
            'pattern'     => '%s.mo',
            'text_domain' => 'mytextdomain'
        )
    ),
    'cache' => \Zend\Cache\StorageFactory::factory(array(
        'adapter' => array(
            'name'    => 'Filesystem',
            'options' => array(
                'cache_dir' => __DIR__ . '/../../../data/cache',
                'ttl'       => '3600'
            )
        ),
        'plugins' => array(
            array(
                'name'    => 'serializer',
                'options' => array()
            ),
            'exception_handler' => array(
                'throw_exceptions' => true
            )
        )
    ))
)

由于闭包(),这会导致循环引用问题。如果我设置,这将起作用,'config_cache_enabled' => false但这不是我追求的目标。

甚至有可能做我正在尝试的事情吗?如果是这样,您可以分享的任何示例都会非常有帮助。

4

1 回答 1

3

您应该只将原始数据写入配置文件(将被缓存的文件)。没有关闭,没有什么不能安全地序列化。

这应该做同样的事情:

'translator'  => array(
    ...
    'cache' => array(
        'adapter' => array(
            'name'    => 'Filesystem',
            'options' => array(
                'cache_dir' => __DIR__ . '/../../../data/cache',
                'ttl'       => '3600'
            )
        ),
        'plugins' => array(
            array(
                'name'    => 'serializer',
                'options' => array()
            ),
            'exception_handler' => array(
                'throw_exceptions' => true
            )
        )
    )
)
于 2013-09-06T14:00:54.130 回答