【问题标题】:How do you work with "global" configuration within ZF?您如何在 ZF 中使用“全局”配置?
【发布时间】:2011-04-07 23:35:07
【问题描述】:

我不确定使用全局配置选项的最佳方式是什么。 例如,如果上传文件时我想将其移动到正确的文件夹中。

  • 我可以硬编码路径,但它不是真的是最好的。
  • 我可以使用常数
  • 我可以使用 config.ini 并设置一些常用的配置选项。也许然后在注册表中注册一个配置对象

你好吗?有什么建议吗?

【问题讨论】:

  • 你的意思是“这真的不是最好的东西”,我猜?
  • 确实 :) 我编辑了我的问题

标签: php zend-framework configuration globalization


【解决方案1】:

Registry 中的Zend_Config object 是 ZF 在这里遵循的常用方法。许多 ZF 类都可以接受配置,并且在 ZF 中几乎没有更好的方法来处理它。

(请记住,无论如何,注册表模式只不过是一个美化的全局。)

【讨论】:

  • 您认为如何将其与动作助手一起使用才能执行 $this->getConfiguration()->something 之类的操作?
  • 我想你可以这样做,只要记住单元测试的含义,如果你最终对你的控制器进行单元测试。
【解决方案2】:

创建一个 config.ini,并在其中分离您的配置,如下所示:

[development]
;File Upload settings
FileUpload.path = /some/path

[production]
;File Upload settings
FileUpload.path = /production/path

现在在你的 Bootstrap.php 中的某个地方,你可以这样做:

$config = new Zend_Config_Ini(
    self::$root . '/config/config.ini',
    'development'
);
self::$registry->configuration = $config;

在任何控制器中:

$config = Zend_Registry::get('configuration');
echo $config->FileUpload->path;

【讨论】:

    【解决方案3】:

    我使用Zend_Registry::set('foo', '/path/to/correct/folder') 一次,然后在需要时使用Zend_Registry::get('foo') 随时调用它。效果很好!

    【讨论】:

    • 我不认为这是错误的(我删除了反对票,我不再反对票了)。但我确实认为可能有更好的方法来做到这一点。也就是说,我知道的很少……
    • The/A Registry 不是一个全局数据容器。为此使用$GLOBALS。 ;)
    • @KingCrush,$GLOBALS 导致代码不可读,但你能解释一下什么是注册表吗?
    猜你喜欢
    • 2019-06-14
    • 2015-07-13
    • 1970-01-01
    • 2020-11-23
    • 2017-07-31
    • 2018-06-30
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    相关资源
    最近更新 更多