我认为我遇到了一个思维障碍,我无法以自己的方式解决这个问题。
在进一步讨论之前,我的目标之一(如果可能)是在'config_cache_enabled' => true
文件中设置application.config.php
,以便我的配置全部合并在一起,同时能够缓存翻译。< / p>
在我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
)
)
))
)
由于closure(),这会导致循环引用问题。如果我设置'config_cache_enabled' => false
,这将有效,但这不是我追求的目标。
甚至可以做我正在尝试的事情吗?如果是这样,您可以分享的任何示例都会非常有用。
答案 0 :(得分: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
)
)
)
)