如何导入配置文件/资源
编辑该页面警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.8,不再维护。
读这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。
如何导入配置文件/资源
提示
在本节中,被称为服务配置文件资源。这是为了强调这一事实,而大多数配置资源文件(例如YAML、XML、PHP), Symfony非常灵活,可以加载配置从任何地方(例如,一个数据库,甚至通过外部web服务)。欧宝娱乐app下载地址
服务容器使用单个配置资源(应用程序/配置/ config.yml
默认情况下)。所有其他服务配置(包括核心Symfony和第三方包配置)必须从内部进口这个文件以一种方式或另一种方式。欧宝娱乐app下载地址这给你绝对的灵活性在您的应用程序的服务。
外部服务配置可以在两种不同的方式进口。第一种方法,常用的导入其他资源,是通过进口
指令。第二种方法,使用依赖注入扩展,使用第三方包加载配置。往下读,了解两种方法。
导入配置与进口
到目前为止,你放置app.mailer
服务容器中直接定义的服务配置文件(如。应用程序/配置/ services.yml
)。如果您的应用程序有很多服务,这个文件变得巨大,难以维护。为了避免这种情况,你可以把你的服务配置成多个文件:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8
# app / config /服务/ mailer.yml参数:app.mailer.transport:sendmail服务:app.mailer:类:AppBundle \梅勒参数:[' % app.mailer.transport % ')
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
< !- - - - - -- - - - - -app/config/services/mailer.xml -->< /span>< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><参数><参数关键=“app.mailer.transport”>sendmail< /参数>< /参数><服务><服务id=“app.mailer”类=“AppBundle \梅勒”><论点>% app.mailer.transport %< /论点>< /服务>< /服务>< /容器>
1 2 3 4 5 6 7
/ / app / config /服务/ mailer.php使用AppBundle\梅勒;美元容器- >setParameter (“app.mailer.transport”,“发送邮件”);美元容器- >注册(“app.mailer”,梅勒::类)- >addArgument (“% app.mailer.transport %”);
定义本身并没有改变,只是它的位置。使服务容器加载资源文件中的定义,使用进口
在任何已经加载的资源(如关键。应用程序/配置/ services.yml
或应用程序/配置/ config.yml
):
- YAML
- XML
- PHP
1 2 3
# app / config / services.yml进口:- - - - - -{资源:服务/ mailer.yml}
1 2 3 4 5 6 7 8 9 10 11
< !- - - - - -- - - - - -app/config/services.xml -->< /span>< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><进口><进口资源=“服务/ mailer.xml”/ >< /进口>< /容器>
1 2
/ / app / config / services.php美元加载程序- >导入(“服务/ mailer.php”);
的资源
位置、文件的当前文件的相对路径或绝对路径。
请注意
由于参数的方式解决,你不能使用它们来构建路径动态进口。这意味着像以下不工作:
- YAML
- XML
- PHP
1 2 3
# app / config / config.yml进口:- - - - - -{资源:' % kernel.root_dir % / parameters.yml '}
1 2 3 4 5 6 7 8 9 10 11
< !- - - - - -- - - - - -app/config/config.xml -->< /span>< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><进口><进口资源=“% kernel.root_dir % / parameters.yml”/ >< /进口>< /容器>
1 2
/ / app / config / config . php美元加载程序- >导入(' % kernel.root_dir % / parameters.yml ');
通过容器扩展导入配置
第三方包容器配置,包括Symfony核心服务,通常加载使用另一种方法更加灵活和易于配置的应用程序。欧宝娱乐app下载地址
在内部,每个包定义其服务到目前为止你看过。然而,这些文件不是导入使用进口
指令。这些包使用依赖注入的扩展加载文件。扩展还允许包提供配置动态加载一些服务。
把FrameworkBundle -核心Symfony框架包为例。欧宝娱乐app下载地址存在下面的代码在应用程序中配置调用FrameworkBundle内的服务容器扩展:
- YAML
- XML
- PHP
1 2 3 4 5
# app / config / config.yml框架:秘密:xxxxxxxxxx形式:真正的#……
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
< !- - - - - -- - - - - -app/config/config.xml -->< /span>< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:框架=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/symfony”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd //www.oldmanjams.com/schema/dic/symfony //www.oldmanjams.com/schema/dic/symfony/symfony-1.0.xsd”><框架:配置秘密=“xxxxxxxxxx”><框架:形式/ >< !- - - - - -- - - - - -。。。- - >< /框架:配置>< /容器>
1 2 3 4 5 6
/ / app / config / config . php美元容器- >loadFromExtension (“框架”,数组(“秘密”= >“xxxxxxxxxx”,“形式”= >数组(),/ /……));
资源解析时,寻找一个扩展,可以处理容器框架
指令。扩展的问题,住在FrameworkBundle,调用加载FrameworkBundle和服务配置。
下的设置框架
指令(如。形式:真
)表明,扩展加载所有服务相关的表单组件。如果形式是残疾人,这些服务不会被加载,形成整合将不可用。
当安装或配置一个包,看到包的文档服务包应该如何安装和配置。欧宝体育电话选择的核心包里可以找到参考指南。
另请参阅
如果你想在自己的共享使用依赖注入扩展包,并提供用户友好的配置,看一看如何加载服务配置在一个包吗篇文章。