加载资源
编辑本页加载资源
加载器从不同的源(如YAML文件)填充应用程序的配置。Config组件为这样的加载器定义了接口。的依赖注入而且路由组件带有针对不同文件格式的专门加载器。
定位资源
加载配置通常从搜索资源(主要是文件)开始。这可以用FileLocator:
1 2 3 4 5 6
使用ob娱乐下载\组件\配置\FileLocator;$configDirectories= (__DIR__.“/配置”];$fileLocator=新FileLocator ($configDirectories);$yamlUserFiles=$fileLocator->定位(“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娱乐下载\组件\Yaml\Yaml;类YamlUserLoader扩展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娱乐下载\组件\配置\加载程序\LoaderResolver;$loaderResolver=新LoaderResolver ([新YamlUserLoader ($fileLocator)));$delegatingLoader=新DelegatingLoader ($loaderResolver);// YamlUserLoader用来加载这个资源,因为它支持//带有`。yaml的扩展$delegatingLoader->负载(__DIR__.' / users.yaml ');
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。