【发布时间】:2012-05-02 13:36:17
【问题描述】:
我正在尝试在 PHP 项目中添加 Zend_Translate,将 Zend 组件用作独立库。
我已经使用以下方法对多个项目使用缓存:
$cache = Zend_Cache::factory( ...
if (!($obj = $cache->load('OBJ')))
{
$obj = ...
$cache->save($obj);
}
现在,按照Zend_Translate 的文档,我将相同的$cache 对象设置为我的Zend_Translate,并在实际创建对象之前使用setCache:
Zend_Translate::setCache($cache);
$translate = new Zend_Translate(
array(
'adapter' => 'gettext',
'content' => 'languages',
null,
array('scan' => Zend_Translate::LOCALE_FILENAME)
)
);
所以,我在这里放弃了我常用的方法,而是将整个 Zend_Translate 放入缓存中。截至目前,总体结果如下:
// 1.php
ob_start();
session_start();
$cache = Zend_Cache::factory( ...
if (!($obj = $cache->load('OBJ')))
{
$obj = ...
$cache->save($obj);
}
Zend_Translate::setCache($cache);
$translate = new Zend_Translate(
array(
'adapter' => 'gettext',
'content' => 'languages',
null,
array('scan' => Zend_Translate::LOCALE_FILENAME)
)
);
echo $translate->_("Hello, I'm the first script");
// end 1.php
和
// 2.php
ob_start();
session_start();
$cache = Zend_Cache::factory( ...
if (!($obj = $cache->load('OBJ')))
{
$obj = ...
$cache->save($obj);
}
Zend_Translate::setCache($cache);
$translate = new Zend_Translate(
array(
'adapter' => 'gettext',
'content' => 'languages',
null,
array('scan' => Zend_Translate::LOCALE_FILENAME)
)
);
echo $translate->_("Hello, I'm the second script");
// end 2.php
这种方法不起作用,因为我看到每次加载页面时都会创建缓存文件。
我想知道:
- 假设我需要在每个页面中调用
Zend_Cache::factory是否正确? - 如何让我的翻译在这种独立情况下使用缓存?
- 关于
Zend_Translate的问题:addTranslation是否在图片中添加任何内容,或者我可以像我一样只加载所有翻译吗?
谢谢!
【问题讨论】:
标签: php zend-framework zend-translate zend-cache