新在Symfoob娱乐下载ny 3.4:先进的环境变量
2017年9月22日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony的版本。ob娱乐下载其中一些信息可能是过时了。阅读最近的Symfony文档ob娱乐下载。
提供的
尼古拉斯Grekas
在# 23901。
ob娱乐下载Symfony 4将促进和利用环境变量配置应用程序的某些部分。在Syob娱乐下载mfony 3.4我们努力让这完全可能的。总是最后一个大的障碍是环境变量转换为字符串。这是一个大问题在使用PHP 7.1类型提示:
1 2 3 4
公共函数连接主机名(字符串,int端口){/ /……}
如果该值港口
参数是通过一个env var,应用程序不会奏效,因为参数将是一个字符串,而不是预期的整数:
1 2
参数:app.connection.port:' % env (DATABASE_PORT) %
在Syob娱乐下载mfony 3.4我们改善了环境变量的处理支持型铸造。当引用一个env var,您现在可以设置你想要的类型的值转换为:
1 2 3
参数:#相当于”(int) getenv (DATABASE_PORT)”app.connection.port:' % env (int: DATABASE_PORT) %
我们包括通常的支持bool:
,int(警官):
,浮动:
和字符串:
铸造。但是我们没有停止!我们还添加了一些实用程序执行最常见操作相关env var(你可以把它们全部)。
的解决:
处理器取代容器参数名称的值:
1 2 3 4
参数:project_dir:“/ foo / bar”env (DB):sqlite: / / % % project_dir % % / var / data.db 'db_dsn:' % env(解决:DB) %
的文件:
处理器被给定的文件的内容,json:
处理器解码给定的内容到一个PHP数组,你可以把它们存储在一些秘密文件:
1 2 3
参数:env (SECRETS_FILE):“/ etc /安全/example.com/secrets.json'app.secrets:' % env (json:文件:SECRETS_FILE) % '
的base64:
处理器和给定base64解码内容常量:
可以指任何PHP常数:
1 2 3 4 5 6
参数:env (SOME_VALUE):“NWE3OWExYzg2NmVmZWY5Y2ExODAwZjk3MWQ2ODlmM2U = 'app.some_value:' % env (base64: SOME_VALUE) %env (NUM_ITEMS):“App \实体\博客::NUM_ITEMS”app.num_items:' % env (const: NUM_ITEMS) %
最后但并非最不重要,你可以定义自己的处理器操作环境变量的内容之前使用它们。为此,定义一个实现新服务EnvVarProcessorInterface
并标记container.env_var_processor
。
发表在#生活在边缘
评论
马克西米利安Berghoff
说9月23日,2017年在03:35
好了!
什么前yaml阵列像地区:[de, en) ?目前他们是字符串当使用env var。
但很高兴听到。现在我可以把APP_DEBUG bool (int)。酷。
什么前yaml阵列像地区:[de, en) ?目前他们是字符串当使用env var。
但很高兴听到。现在我可以把APP_DEBUG bool (int)。酷。
乔治亚娜Gligor
说9月24日,2017年在19:01
@Maximilian我将编写一个定制的“arrayDecoder”实现“EnvProviderInterface”,我认为这将是很微不足道的。问题是,一旦你把数组中的元素,你也可以把他们。
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
同样的容器。env_provider”实际上是“容器。env_var_processor”:)
像“% env (myDecoder: API_PASSWORD) %”,将解密环境值变成有用的东西。
类MyDecoder实现EnvironmentOperator {
公共函数解决(字符串值美元):string {
/ /解密神奇的东西
美元返回值;
}
}
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now