在Symfony2中,哪里是存储app wide参数的正确位置?

时间:2011-10-22 17:29:41

标签: php parameters symfony

我想存储一些特定于应用程序的值,例如:

  • 特定用户选择的默认ID编号(如果尚未设置)
  • 各种服务API的密钥/令牌/秘密,如facebook或flickr

我发现到目前为止最近的是http://symfony.com/doc/2.0/cookbook/bundles/best_practices.html#configuration

如果我使用app/config/parameters.ini,它将会是:

[flickr]
    callbackUrl = http://example.com/approve
    requestTokenUrl = http://www.flickr.com/services/oauth/request_token
    consumerKey = 123a1237a29b123a5541232e0279123

[app]
    default_layout = 2

这些应该可以在不同的包中使用,也可以在模板中使用

1 个答案:

答案 0 :(得分:6)

  

这些应该可以在不同的包中使用,也可以在模板中使用

他们是。只要您可以访问容器,就可以访问参数。从您链接到的文档: $container->getParameter('acme_hello.email.from');

我认为您的parameters.ini示例中存在错误。 'flickr'和'app'不应该用括号括起来。此外,parameters.ini的第一个元素应该是[parameters]

就个人而言,我喜欢使用app.yml文件,因为我习惯在Symfony 1.x项目中使用它(因为我没有看到使用.ini文件的原因。)。您可以创建app/config/app.yml并将其导入app/config/config.yml文件,如下所示:

imports:
    - { resource: app.yml }

你的app.yml看起来像这样:

parameters:
  flickr:
    callbackUrl:     http://example.com/approve
    requestTokenUrl: http://www.flickr.com/services/oauth/request_token
    consumerKey:     123a1237a29b123a5541232e0279123

  app:
    default_layout:  2

这就是你访问数据的方式: $container->getParameter('flickr.callbackUrl');

第三种选择是直接在app/config/config.yml中定义参数。代码与app/config/app.yml的示例完全相同。我不建议这样做,因为app/config/config.yml可以充满捆绑配置参数,我认为将自己的应用程序参数保存在单独的文件中会更清晰。但当然,这完全取决于你。