如何导入配置文件/资源
编辑本页如何导入配置文件/资源
提示
在本节中,业务配置文件被称为资源.虽然大多数配置资源是文件(例如YAML, XML, PHP), Symfony能够从任何地方加载配置(例如数据库,甚至通过外部web服务ob娱乐下载)。
服务容器是使用单一配置资源(配置/ services.yaml
默认情况下)。这为应用程序中的服务提供了绝对的灵活性。
外部服务配置可以通过两种不同的方式导入。方法,通常用于导入其他资源进口
指令。第二种方法使用依赖注入扩展,由第三方捆绑包用于加载配置。继续读下去,了解更多关于这两种方法的信息。
导入配置进口
默认情况下,服务配置存在配置/ services.yaml
.但是如果这个文件变大了,你可以自由地组织成多个文件。假设你决定移动一些配置到一个新文件:
- YAML
- XML
- PHP
1 2 3 4 5 6
#配置/服务/ mailer.yaml参数:#……一些参数服务:#……一些服务
要导入此文件,请使用进口
键,并传递一个相对路径或绝对路径给导入的文件:
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15
#配置/ services.yaml进口:-{资源:服务/ mailer.yaml}如果你想导入一个完整的目录:-{资源:服务/}服务:_defaults:自动装配:真正的可以使用autoconfigure:真正的App \:资源:“. . / src / *”排除:“. . / src / {DependencyInjection、实体、迁移、测试,Kernel.php}”#……
加载配置文件时,Symfony首先加载导入的文件,然后处理文件中定义的ob娱乐下载参数和服务。如果你使用默认的服务。yaml的配置在上面的例子中,App \
定义为中找到的类创建服务. . / src / *
.如果您导入的文件也为这些类定义了服务,那么它们将被覆盖。
方法中添加导入文件的类和/或目录,这是一个可能的解决方案排除
选项App \
定义。另一种解决方案是不使用导入并在同一文件中添加服务定义,而是在App \
定义来覆盖它。
请注意
由于解析参数的方式,您不能使用它们动态地在导入中构建路径。这意味着以下内容是行不通的:
- YAML
- XML
- PHP
1 2 3
#配置/ services.yaml进口:-{资源:' % kernel.project_dir % / somefile.yaml '}
通过容器扩展导入配置
第三方捆绑容器配置,包括Symfony核心服务,通常使用另一种方法加载ob娱乐下载容器扩展.
在内部,每个bundle在文件中定义了它的服务,就像您已经看到的那样。方法导入这些文件进口
指令。相反,bundle使用依赖注入扩展自动加载文件。只要您启用了一个bundle,它的扩展就会被调用,它能够加载服务配置文件。
实际上,每个配置文件都在配置/包/
传递给其相关包的扩展。FrameworkBundle
或TwigBundle
-并用于进一步配置这些服务。