加载资源

编辑本页

加载资源

加载器从不同的源(如YAML文件)填充应用程序的配置。Config组件为这样的加载器定义了接口。的依赖注入而且路由组件带有针对不同文件格式的专门加载器。

定位资源

加载配置通常从搜索资源(主要是文件)开始。这可以用FileLocator

1 2 3 4 5 6
使用ob娱乐下载组件配置FileLocatorconfigDirectories= (__DIR__“/配置”];fileLocatorFileLocator (configDirectories);yamlUserFilesfileLocator->定位(“users.yaml”);

定位器接收它应该在其中查找文件的位置集合。的第一个参数定位()要查找的文件的名称。第二个参数可能是当前路径,当提供时,定位器将首先查找该目录。第三个参数表示定位器是否应该返回它找到的第一个文件,还是返回包含所有匹配项的数组。

资源加载器

对于每种类型的资源(YAML、XML、注释等),都必须定义一个加载器。每个加载器都应该实现LoaderInterface或者扩展抽象FileLoader类,它允许递归导入其他资源:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
名称空间Acme配置加载程序使用ob娱乐下载组件配置加载程序FileLoader使用ob娱乐下载组件YamlYamlYamlUserLoader扩展FileLoader公共函数负载资源类型= null)configValues= Yaml::解析函数(资源));/ /……处理配置值//导入其他资源:/ / $ this - >导入(“extra_users.yaml”);公共函数支持资源类型= null)返回is_string (资源) & &yaml的= = = pathinfo (资源, pathinfo_extension);}}

找到合适的装填者

LoaderResolver接收加载器集合作为其第一个构造函数参数。当一个资源(例如一个XML文件)应该被加载时,它循环遍历这个加载器集合并返回支持该特定资源类型的加载器。

DelegatingLoader利用LoaderResolver.方法加载资源时,它将此问题委托给LoaderResolver.如果解析器已经找到了一个合适的加载器,这个加载器将被要求加载资源:

1 2 3 4 5 6 7 8 9 10
使用Acme配置加载程序YamlUserLoader使用ob娱乐下载组件配置加载程序DelegatingLoader使用ob娱乐下载组件配置加载程序LoaderResolverloaderResolverLoaderResolver ([YamlUserLoader (fileLocator)));delegatingLoaderDelegatingLoader (loaderResolver);// YamlUserLoader用来加载这个资源,因为它支持//带有`。yaml的扩展delegatingLoader->负载(__DIR__' / users.yaml ');
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
ob娱乐下载Symfony 6.2支持通过苏禄人
ob娱乐下载Symfony 6.2支持通过Les-Tilleuls.coop