【问题标题】:Zend Framework - Reading Application.ini values from a ControllerZend Framework - 从控制器读取 Application.ini 值
【发布时间】:2010-03-29 14:14:49
【问题描述】:

我正在尝试将我的 Google Maps API 密钥存储在我的 application.ini 文件中,并且我希望能够在需要时从我的控制器中读取它。如何从我的控制器中读取 application.ini 中的值?

谢谢!

【问题讨论】:

    标签: zend-framework web-applications configuration


    【解决方案1】:

    This 文章可能会对您有所帮助。作者解释了如何从 application.ini 文件中检索 gmail 连接参数。

    你可能想试试:

    $bootstrap = $this->getInvokeArg('bootstrap');
    $aConfig = $bootstrap->getOptions();
    googleMapsKey = $aConfig['your_resource']['your_key'];
    

    【讨论】:

    【解决方案2】:

    我倾向于在引导程序中执行此操作,然后正如 Gordon 提到的那样将其扔到注册表中。然后,您可以从注册表中的任何位置获取它。

    $this->config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV);
    Zend_Registry::set('config', $this->config);
    

    另外,就他的观点而言,控制器往往是错误的地方,除非你用多个键访问 API,我猜,但即使那样你也应该能够将逻辑放在模型中以选择注册表中的一个键。

    【讨论】:

      【解决方案3】:

      通过前端控制器

      // bootstrap
      $front->setParam('GMapsApiKey', 123456);
      
      // controller
      $this->getFrontController()->getParam('GMapsApiKey');
      

      或注册表:

      // bootstrap
      Zend_Registry::set('GMapsApiKey', '123456');
      
      // controller
      Zend_Registry::get('GMapsApiKey');
      

      但是,由于对 Google Maps API 的访问是在模型中进行的,因此您的控制器不需要知道 API 密钥。

      【讨论】:

      • 有什么方法可以在我需要的时候阅读它吗?我试图避免在每个请求的引导程序中都这样做,因为它只会在一小部分页面上需要
      • @Ryan bootstrap 和 application.ini 无论如何都会在每个请求上被调用,所以如果不这样做,你只会获得一微秒的时间。如果您按需加载 application.ini,您将有一个额外的 I/O 请求。这要慢得多。
      • 感谢 Gordon,这很有意义。我很困惑这将如何在模型中进行。我计划为 Google 地图创建一个提供程序(又名“模型”),但最终我需要在视图中使用它,以便通过 JavaScript API 请求将其传递给 Google。
      • @Ryan 我还没有使用过任何 Google API 或 Zend_GData 类,但这里有一个截屏视频和示例代码:zendcasts.com/using-google-maps-with-zend_gdata/2009/09 - 也许这会有所帮助。他们虽然定义了控制器中的键。如果只需要 View 中的 API 密钥,也可以在初始化视图时将其设置为视图。
      猜你喜欢
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      相关资源
      最近更新 更多