配置

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.5,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

配置

配置通常涉及不同的应用程序部分(如基础设施和安全凭据)和不同的环境(开发、生产)。这就是Symfony建ob娱乐下载议将应用程序配置分成三部分的原因。

最佳实践

属性中定义与基础结构相关的配置选项应用程序/配置/ parameters.yml文件。

默认的parameters.yml文件遵循这个建议,并定义了与数据库和邮件服务器基础设施相关的选项:

12 3 4 5 6 7 8 9 10 11 12 13 14 15
# app / config / parameters.yml参数:database_driver:pdo_mysqldatabase_host:127.0.0.1database_port:database_name:ob娱乐下载database_user:database_password:mailer_transport:smtpmailer_host:127.0.0.1mailer_user:mailer_password:#……

类中没有定义这些选项应用程序/配置/ config.yml文件,因为它们与应用程序的行为无关。换句话说,只要正确配置了数据库,应用程序就不关心数据库的位置或访问它的凭据。

规范参数

最佳实践

类中定义应用程序的所有参数应用程序/配置/ parameters.yml.dist文件。

从2.3版开始,Symfony包含了一ob娱乐下载个名为parameters.yml.dist,它存储应用程序的配置参数的规范列表。

无论何时为应用程序定义了新的配置参数,都应该将其添加到该文件中,并将更改提交给版本控制系统。然后,每当开发人员更新项目或将其部署到服务器时,Symfony将检查规范之间是否存在任何差异ob娱乐下载parameters.yml.dist文件和本地文件parameters.yml文件。如果有差异,Symfony将要求您为新参数提供一个值ob娱乐下载,并将其添加到您的本地parameters.yml文件。

最佳实践

属性中定义与应用程序行为相关的配置选项应用程序/配置/ config.yml文件。

config.yml文件包含应用程序用于修改其行为的选项,例如电子邮件通知的发件人或已启用的功能切换.在parameters.yml文件将添加一个不必要的额外配置层,因为您不需要或不希望在每个服务器上更改这些配置值。

属性中定义的配置选项config.yml文件通常不同于一个环境到另一个地方。这就是为什么Symfoob娱乐下载ny已经包含了应用程序/配置/ config_dev.yml而且应用程序/配置/ config_prod.yml文件,以便您可以覆盖每个环境的特定值。

常量vs配置选项

定义应用程序配置时最常见的错误之一是为永不更改的值创建新选项,例如分页结果的项数。

最佳实践

使用常量定义很少更改的配置选项。

定义配置选项的传统方法导致许多Symfony应用程序包含如下选项,用于控制在博客主页上显示的帖子数量:ob娱乐下载

1 2 3
# app / config / config.yml参数:homepage.num_items:10

如果你问自己上次改变值是什么时候任何这样的选择,你很有可能从来没有有。没有必要为永远不会配置的值创建配置选项。我们建议在应用程序中将这些值定义为常量。例如,你可以定义一个NUM_ITEMS常量帖子实体:

1 2 3 4 5 6 7 8 9
/ / src / AppBundle /实体/ Post.php名称空间AppBundle实体帖子常量NUM_ITEMS =10/ /……

定义常量的主要优点是可以在应用程序中的任何地方使用它们的值。当使用参数时,它们只能从能够访问Symfony容器的地方使用。ob娱乐下载

常量可以在你的Twig模板中使用,这要感谢常数()功能:

1 2 3
<p>显示{{常数(' NUM_ITEMS ', post)}}最近的结果。p>

Doctrine实体和存储库现在可以很容易地访问这些值,而它们不能访问容器参数:

12 3 4 5 6 7 8 9 10 11 12
名称空间AppBundle存储库使用学说ORMEntityRepository使用AppBundle实体帖子PostRepository扩展EntityRepository公共函数findLatest限制=:: NUM_ITEMS)/ /……}}

对这类配置值使用常量的唯一显著缺点是,您不能在测试中轻松地重新定义它们。

语义配置:不要这样做

最佳实践

不要为你的包定义语义依赖注入配置。

如在如何在一个包内加载服务配置文章中,Symfoob娱乐下载ny包在如何处理配置方面有两种选择:通过services.yml文件和语义配置通过特殊*扩展类。

尽管语义配置更强大,并提供了配置验证等不错的特性,但对于不打算作为第三方包共享的包来说,定义该配置所需的工作量是不值得的。

将敏感选项完全移出Symfonyob娱乐下载

在处理敏感选项(如数据库凭据)时,我们还建议将它们存储在Symfony项目之外,并通过环境变量使它们可用。ob娱乐下载在下面的文章中学习如何做到这一点:如何设置服务容器的外部参数

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。