新在Symfoob娱乐下载ny 5.3:在一个文件中配置多个环境
2021年5月7日,·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony的版本。ob娱乐下载其中一些信息可能是过时了。阅读最近的Symfony文档ob娱乐下载。
提供的
尼古拉斯Grekas
在# 40214和# 40782。
ob娱乐下载Symfony的定义不同配置环境所以你可以改变你的应用程序的行为取决于运行的(例如,在您的开发机,在生产服务器,等等)。
选项应用到包/包在所有环境中定义配置/包/
和每个环境中定义的特定选项/ <环境> / config /包
。
这工作得很好,但它的笨重的环境差异最小,因为您需要创建/维护另一个配置文件来改变一些配置选项。
这就是为什么在Symfonyob娱乐下载 5.3还可以为不同的环境在一个文件中定义的选项。具体的语法使用取决于配置文件的格式。
在使用YAML配置文件when@……
特殊的关键:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#配置/包/ webpack_encore.yamlwebpack_encore:#……output_path:“% kernel.project_dir % /公共建设”strict_mode:真正的缓存:假when@prod:webpack_encore:缓存:真正的when@test:webpack_encore:strict_mode:假
在XML配置中,将新的配置<当>
标签:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
< !——配置/包/ webpack_encore。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><容器xmlns=“…”><webpack-encore:配置>< !——……- - >< /webpack-encore:配置><当env=“刺激”><webpack-encore:配置>< !——……- - >< /webpack-encore:配置>< /当><当env=“测试”><webpack-encore:配置>< !——……- - >< /webpack-encore:配置>< /当>< /容器>
在PHP配置文件,使用新的env ()
方法检查运行环境的应用程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/ /配置/包/ framework.php使用ob娱乐下载\组件\DependencyInjection\加载程序\配置器\ContainerConfigurator;使用ob娱乐下载\配置\FrameworkConfig;返回静态函数(FrameworkConfig美元框架,ContainerConfigurator美元容器){/ /……如果(“刺激”= = =美元容器- >env ()) {/ /……}如果(“测试”= = =美元容器- >env ()) {美元框架- >测试(真正的);美元框架- >会话()- >storageFactoryId (“session.storage.mock_file”);}};
这个语法也可以定义路线和服务只在某些环境中。你甚至可以把所有在一个单一的文件来配置一些包和创建服务只对一些环境:
1 2 3 4 5 6 7 8 9 10 11
框架:秘密:' % env (APP_SECRET) %when@dev:服务:App \ SomeServiceForDev:~when@test:框架:测试:真正的#……
使用一个配置文件/环境的传统方式将在未来继续工作,但我们鼓励你尝试这个新特性来减少配置文件的数量来维持。
最后,现在可以使用PHP类属性告诉他们只能注册为服务在某些环境中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用ob娱乐下载\组件\DependencyInjection\属性\当;#(当(env:“开发”))类SomeClass{/ /……}/ /可以将多个属性应用到同一个类:#(当(env:“开发”))#(当(env:“测试”))类AnotherClass{/ /……}
发表在#生活在边缘
评论
值得注意的是,当您使用PHP配置您必须考虑通过环境包可用性。
WebProfilerBundle只能为“开发”和“测试”环境一般,所以WebProfilerConfig类将不会创建“刺激”,不能用于配置/包目录中。
WebProfilerBundle只能为“开发”和“测试”环境一般,所以WebProfilerConfig类将不会创建“刺激”,不能用于配置/包目录中。
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now