加载资源

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.7,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

加载资源

谨慎

IniFileLoader方法解析文件内容parse_ini_file函数。因此,只能将参数设置为字符串值。要将参数设置为其他数据类型(如布尔型、整数型等),建议使用其他加载器。

定位资源

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

1 2 3 4 5 6
使用欧宝娱乐app下载地址组件配置FileLocatorconfigDirectories数组__DIR__/应用程序/配置的);fileLocatorFileLocator (configDirectories);yamlUserFilesfileLocator->定位(“users.yml”);

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

资源加载器

对于每种类型的资源(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
使用欧宝娱乐app下载地址组件配置加载程序FileLoader使用欧宝娱乐app下载地址组件YamlYamlYamlUserLoader扩展FileLoader公共函数负载资源类型= null)configValues= Yaml::解析函数(资源));/ /……处理配置值//导入其他资源:/ / $ this - >导入(“extra_users.yml”);公共函数支持资源类型= null)返回is_string (资源) & &“yml”= = = pathinfo (资源, pathinfo_extension);}}

找到合适的装填者

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

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

1 2 3 4 5 6 7 8 9 10 11
使用欧宝娱乐app下载地址组件配置加载程序LoaderResolver使用欧宝娱乐app下载地址组件配置加载程序DelegatingLoaderloaderResolverLoaderResolver (数组YamlUserLoader (fileLocator)));delegatingLoaderDelegatingLoader (loaderResolver);delegatingLoader->负载(__DIR__' / users.yml ');YamlUserLoader将被用来加载这个资源,因为它支持扩展名为“yml”的文件
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。