gpt4 book ai didi

zend-framework - Zend Framework - 在 Bootstrap 中获取请求对象

转载 作者:行者123 更新时间:2023-12-04 06:00:39 24 4
gpt4 key购买 nike

我正在设计一个具有以下网址形式的网站:
example.com/controller/action/locale
在其中我从 uri 参数语言环境中获取语言环境。

在 bootstrap 中,当我想初始化我的资源(如 Zend_Locale、Zend_Translator 或其他配置 Zend_Validate_Date 之类的组件的资源时,它们都需要区域设置数据。
此外,我本可以根据收到的语言环境使用不同的数据库。
但是由于 bootstrap 中通常没有 uri 参数可用,我需要在 Controller 插件中初始化以上所有内容,这对我来说似乎毫无意义。

总之,我认为请求对象和 uri 参数应该在 bootstrap 中可用。所以目前 Zend Framework 的设计缺少这一点。

我是对的还是遗漏了什么?

最佳答案

抱歉,您的建议是个坏主意。引导旨在通过初始化所需的设置、变量等使库进入工作状态。

引导者应该做的一些事情:

  • 将自定义路径添加到“include_path”
  • 初始化字符集 (UTF-8) 和编码指令 (mb_internal_encoding)
  • 初始化记录器(错误或应用程序记录)
  • 初始化自动加载器

  • 您的应用程序应该在 Controller 层处理您的需求。例如,如果用户访问 example.com/controller/action/en-US,您的 Controller 可以通过访问请求对象(和指定的参数)并设置用户 session 变量来相应地设置语言以用英语显示当前和后续页面.

    - 编辑 -

    使用中间类与将值传递给 bootstrap 来初始化 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'
    ));
    }
    }
    }

    关于zend-framework - Zend Framework - 在 Bootstrap 中获取请求对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8948274/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com