对不起,但你的建议是个坏主意。引导旨在通过初始化所需的设置、变量等使库进入工作状态。
引导程序应该做的一些事情:
- 将自定义路径添加到“include_path”
- 初始化字符集 (UTF-8) 和编码指令 (mb_internal_encoding)
- 初始化记录器(错误或应用程序记录)
- 初始化自动加载器
您的应用程序应该在控制器层处理您的需求。例如,如果用户访问 example.com/controller/action/en-US,您的控制器可以通过访问请求对象(和指定的参数)相应地设置语言,并设置用户会话 var 以显示当前和后续页面的英文.
- 编辑 -
使用中间类初始化 i18n/locale 设置的示例实现与将值传递给引导程序:
// Controller
$i18n = new i18n();
$i18n->setLocale($this->getRequest()->getParameter('locale'));
// Now I can make locale specific calls to validate localized data
$i18n->validateDate($this->getRequest()->getParameter('date'));
// Can also make queries for locale specific data
$results = $i18n->getDob()->query('select * from my_table');
// i18n class
class i18n
{
protected $locale;
public function setLocale($locale)
{
$this->locale = $locale;
}
public function getLocale()
{
return $this->locale;
}
// Factory method for creating a database object based on locale
public function getDbo()
{
switch ($this->getLocale()) {
case 'en-US':
return new Zend_Db::factory('Pdo_Mysql', array(
'host' => 'hostname',
'username' => 'username',
'password' => 'password',
'dbname' => 'en_us_locale'
));
case 'en-GB':
return new Zend_Db::factory('Pdo_Mysql', array(
'host' => 'hostname',
'username' => 'username',
'password' => 'password',
'dbname' => 'en_gb_locale'
));
}
}
}