如何导入配置文件/资源

编辑该页面

如何导入配置文件/资源

提示

在本节中,被称为服务配置文件资源。虽然大多数配置资源文件(例如YAML、XML、PHP), Symfony能够从任何地方加载配置(例如,一个数据库,甚至通过外部web服务欧宝娱乐app下载地址)。

服务容器使用单个配置资源(配置/ services.yaml默认情况下)。这给你绝对的灵活性在您的应用程序的服务。

外部服务配置可以在两种不同的方式进口。第一种方法,常用的导入其他资源,是通过进口指令。第二种方法,使用依赖注入扩展,使用第三方包加载配置。往下读,了解两种方法。

导入配置与进口

默认情况下,服务配置生活在配置/ services.yaml。但是如果文件变大,你可以组织成多个文件。假设你决定一些配置转移到一个新文件:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
#配置/服务/ mailer.yaml参数:#……一些参数服务:#……一些服务

导入这个文件,可以使用进口主要从任何其他文件和通过一个相对或绝对路径导入的文件:

  • YAML
  • XML
  • PHP
1 2 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加载首先导入的文件,然后处理参数和服务中欧宝娱乐app下载地址定义的文件。如果你使用默认的服务。yaml的配置在上面的例子中,App \定义为类创建服务中发现的. . / src / *。如果你进口这些类文件定义服务,他们将被覆盖。

一个可能的解决方案是添加的类和/或导入的文件的目录排除选择的App \定义。另一个解决方案是使用进口和添加服务定义在同一个文件中,但之后App \定义覆盖它。

请注意

由于参数的方式解决,你不能使用它们来构建路径动态进口。这意味着像以下不工作:

  • YAML
  • XML
  • PHP
1 2 3
#配置/ services.yaml进口:- - - - - -{资源:' % kernel.project_dir % / somefile.yaml '}

通过容器扩展导入配置

第三方包容器配置,包括Symfony核心服务,通常使用另一种方法:加载欧宝娱乐app下载地址容器扩展

在内部,每个包定义其服务等文件到目前为止您已经看到。然而,这些文件不是导入使用进口指令。相反,包使用依赖注入的扩展自动加载文件。一旦启用了一捆,其扩展,能够负载服务配置文件。

事实上,每一个配置文件配置/包/传递给相关的扩展包——如。FrameworkBundleTwigBundle进一步,用于配置这些服务。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。
欧宝娱乐app下载地址Symfony 6.2支持通过苏禄人
欧宝娱乐app下载地址Symfony 6.2支持通过Les-Tilleuls.coop