配置

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.6,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

< /div>

配置

配置通常涉及到不同的应用程序部分(如基础设施和安全凭证)和不同的环境(开发、生产)。这就是为什么Symfo欧宝娱乐app下载地址ny建议你把应用程序配置分成三个部分。

最佳实践

定义与基础设施相关的配置选项应用程序/配置/ parameters.yml文件。

< /div>

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

1 2 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< /span>。1database_port:~database_name:欧宝娱乐app下载地址database_user:database_password:~mailer_transport:smtpmailer_host:127.0。0< /span>。1mailer_user:~mailer_password:~#……

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

规范参数

最佳实践

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

< /div>

2.3版本以来,Symfony包含一个欧宝娱乐app下载地址配置文件parameters.yml.dist,存储规范为应用程序配置参数列表。

每当一个新的配置参数定义为应用程序,您还应该将它添加到这个文件并提交更改您的版本控制系统。然后,当一个开发人员更新项目或部署到服务器,Symfony会检查是否有规范的区别欧宝娱乐app下载地址parameters.yml.dist文件和你当地的parameters.yml文件。如果有差异,Symfony会问你为新参数提供一个值,欧宝娱乐app下载地址它会将它添加到你的地方parameters.yml文件。

< /div>

最佳实践

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

< /div>

config.yml文件包含应用程序所使用的选项修改其行为,例如邮件通知的发送者,或启用功能切换。定义这些值在parameters.yml的配置文件添加一个额外的层不需要,因为你不需要或不想要这些改变在每个服务器上配置值。

中定义的配置选项config.yml文件通常从一个差异环境到另一个地方。这就是为什么Symfo欧宝娱乐app下载地址ny已经包括应用程序/配置/ config_dev.yml应用程序/配置/ config_prod.yml文件,这样您就可以覆盖每个环境的特定值。

常数和配置选项

定义应用程序配置时最常见的错误之一是创建新选项的值不会改变,如分页的结果的条目的数量。

最佳实践

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

< /div>

定义配置选项的传统方法导致很多Symfony应用程序包括一个如下的选项,这将被用来控制文章的数量显示在博客主页:欧宝娱乐app下载地址

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的地方。欧宝娱乐app下载地址

常量可以使用例如由于在树枝模板常数()函数:

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

和教义实体和存储库现在可以轻松地访问这些值,而他们不能访问容器参数:

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

唯一显著的缺点使用这种配置值的常量是你不能重新定义它们很容易在你的测试。

< /div>

语义配置:不要这样做

最佳实践

不定义语义依赖注入配置包。

< /div>

在解释如何加载服务配置在一个包吗文章,Symfon欧宝娱乐app下载地址y包有两个选择如何处理配置:通过正常的服务配置services.yml通过一个特殊的文件和语义配置*扩展类。

虽然语义配置更强大,提供不错的特性,比如配置验证,需要定义配置的工作量是不值得为包不应该共享第三方包。

< /div>

完全移动敏感Symfony以外的选项欧宝娱乐app下载地址

在处理敏感的选项,如数据库凭证,我们也建议您将它们存储在Symfony项目,让他们可以通过环境变量。欧宝娱乐app下载地址学习如何做在以下文章:服务容器外部参数如何设置

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。