如何设置服务容器的外部参数

编辑本页

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

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

如何设置服务容器的外部参数

在文章中配置Symfony(和环ob娱乐下载境),您了解了如何管理应用程序配置。有时,在项目代码之外存储某些凭据可能对应用程序有利。数据库配置就是这样一个例子。Symfony服务容器的灵活性允许您这样做。ob娱乐下载

环境变量

3.2

env ()参数在Symfony 3.2中引入。ob娱乐下载

您可以使用特殊的参数引用环境变量,这些参数以您想要使用的变量命名env ().它们的实际值将在运行时解析(每个请求一次),因此即使在编译之后,转储容器也可以动态地重新配置。

例如,如果要使用的值DATABASE_HOST服务容器配置中的环境变量,您可以使用% env (DATABASE_HOST) %在你的配置文件中:

  • YAML
  • XML
  • PHP
1 2 3 4
# app / config / config.yml原则:dbal:主持人:' % env (DATABASE_HOST) %

你也可以给env ()参数默认值:当对应的环境变量为时,将使用默认值发现:

  • YAML
  • XML
  • PHP
1 2 3 4
# app / config / parameters.yml参数:database_host:' % env (DATABASE_HOST) %env (DATABASE_HOST):本地主机

设置环境变量通常在web服务器级别或在终端中完成。如果你正在使用Apache, nginx或者仅仅是控制台,你可以使用以下其中之一:

  • Apache
  • Nginx
  • Bash
1 2 3 4 5 6
< VirtualHost *: 80 >#……SetEnvDATABASE_USER用户SetEnvDATABASE_PASSWORD秘密< /虚拟主机>

提示

3.3

特别的支持ob娱乐下载SYMFONY__环境变量在Symfony 3.3中已弃用,将在4.0中移除。ob娱乐下载方法来定义常规环境变量并获取它们的值,而不是使用这些变量% env(…)%配置文件中的语法。

还可以使用特殊的环境变量定义任何现有参数的默认值,这些变量以对应的参数命名,并以前缀命名ob娱乐下载SYMFONY__用双下划线替换点后(例如。ob娱乐下载SYMFONY__KERNEL__CHARSET属性的默认值kernel.charset参数)。这些默认值是在编译服务容器时解析的,转储后不会在运行时更改。

的web界面中也会显示env变量的值ob娱乐下载Symfony分析器.实际上,这应该不是问题,因为web分析器必须这样做从来没有在生产环境中启用。

环境变量处理器

3.4

在Symfony 3.4中引入了环境变量处理器。ob娱乐下载

默认情况下,环境变量的值被视为字符串。但是,您的代码可能需要其他数据类型,如整数或布尔值。ob娱乐下载Symfony解决了这个问题处理器,它修改给定环境变量的内容。类型的值,下面的示例使用整数处理器HTTP_PORT将Env var转换为整数:

  • YAML
  • XML
  • PHP
1 2 3 4
# app / config / config.yml框架:路由器:http_port:' % env (int: HTTP_PORT) %

ob娱乐下载Symfony提供了以下env var处理器:

env(字符串FOO):

数据类型转换喷火对字符串:

  • YAML
  • XML
  • PHP
1 2 3 4 5
# app / config / config.yml参数:env(秘密):“some_secret”框架:秘密:' % env(字符串:秘密)%
env (bool: FOO)

数据类型转换喷火到bool类型:

  • YAML
  • XML
  • PHP
1 2 3 4 5
# app / config / config.yml参数:env (HTTP_METHOD_OVERRIDE):“真正的”框架:http_method_override:' % env (bool: HTTP_METHOD_OVERRIDE) %
env (int: FOO)
数据类型转换喷火整型。
env(浮动:FOO)
数据类型转换喷火到花车上去。
env (const: FOO)

中指定的常量值喷火

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7
# app / config / config.yml参数:env (HEALTH_CHECK_METHOD):“ob娱乐下载Symfony \ HttpFoundation \ \组件请求:METHOD_HEAD”安全:access_control:-路径:$ ^ /健康检查的方法:' % env (const: HEALTH_CHECK_METHOD) %
env (base64: FOO)
的内容进行解码喷火,这是一个base64编码的字符串。
env (json: FOO)

的内容进行解码喷火,这是一个JSON编码的字符串。它返回一个数组或

  • YAML
  • XML
  • PHP
1 2 3 4 5
# app / config / config.yml参数:env (TRUSTED_HOSTS):”(“10.0.0.1”表示,“10.0.0.2”)”框架:trusted_hosts:' % env (json: TRUSTED_HOSTS) %
env(解决:FOO)

替换字符串喷火通过具有相同名称的配置参数的值:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7
# app / config / config.yml参数:env(主持人):“10.0.0.1”表示sentry_host:' % env(主机)%env (SENTRY_DSN):“https://%sentry_host%/project”哨兵:dsn:' % env(解决:SENTRY_DSN) %
env(文件:FOO)

属性的值所表示的文件的内容喷火env var:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8
# app / config / config.yml参数:env (AUTH_FILE):“. . / auth.json”服务:some_authenticator:参数:身份验证:美元' % env(文件:AUTH_FILE) %

也可以组合任意数量的处理器:

1 2 3 4 5 6 7 8 9 10 11
参数:env (AUTH_FILE):“% kernel.project_dir % / config / auth.json”服务:some_authenticator:参数:# 1。获取AUTH_FILE环境变量的值# 2。替换任何配置参数的值以获取配置路径# 3。获取存储在该路径中的文件的内容# 4。json -解码文件的内容并返回它身份验证:美元' % env (json文件:解决:AUTH_FILE) % '

自定义环境变量处理器

也可以为环境变量添加自己的处理器。首先,创建实现的类EnvVarProcessorInterface然后,为该类定义一个服务:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
LowercasingEnvVarProcessor实现了EnvVarProcessorInterface私人容器公共函数__construct(ContainerInterface容器->容器=容器;}公共函数采用前缀的名字关闭,\采用env采用的名字);返回函数env);}公共静态函数getProvidedTypes()返回“小写”= >“字符串”,);}}

常量

容器还支持将PHP常量设置为参数。看到参数简介欲知详情。

其他配置

进口指令可用于拉入存储在其他地方的参数。导入PHP文件使您可以灵活地在容器中添加所需的任何内容。下面导入一个名为parameters.php

  • YAML
  • XML
  • PHP
1 2 3
# app / config / config.yml进口:-资源:parameters.php

请注意

资源文件可以是多种类型中的一种。PHP、XML、YAML、INI和闭包资源都由进口指令。

parameters.php,告诉服务容器您希望设置的参数。当重要配置采用非标准格式时,这非常有用。下面的例子包含了Symfony服务容器中的Drupal数据库配置:ob娱乐下载

1 2 3
/ / app / config / parameters.phpinclude_once' /道路/ / drupal /网站/违约/ settings.php”);容器->setParameter (“drupal.database.url”db_url);
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。