博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在一个Bundle里如何加载服务配置
阅读量:6313 次
发布时间:2019-06-22

本文共 1515 字,大约阅读时间需要 5 分钟。

hot3.png

###1.创建一个自动加载的扩展类 *. 类在DependencyInjection命令空间下(通常文件位置位于DependencyInjection 目录下) *. 文件的命令是去掉Bundle的名称的后缀Bundle用Extension来替代(eg AppBundle --> AppExtesion)

该类需要实现ExtensionInterface接口;通常通过继承 Extension类来实现

// src/Acme/HelloBundle/DependencyInjection/AcmeHelloExtension.phpnamespace Acme\HelloBundle\DependencyInjection;use Symfony\Component\HttpKernel\DependencyInjection\Extension;use Symfony\Component\DependencyInjection\ContainerBuilder;class AcmeHelloExtension extends Extension{    public function load(array $configs, ContainerBuilder $container)    {        // ... you'll load the files here later    }}

###2. 手动注册一个扩展类 如果我们不遵守上面自动加载的约束;我们将要手动注册该扩展类;我们需要重写Bundle的getContainerExtension方法;该方法返回我们的扩展类的实例

use Acme\HelloBundle\DependencyInjection\UnconventionalExtensionClass;class AcmeHelloBundle extends Bundle{    public function getContainerExtension()    {        return new CustomerExtension();//自定义的扩展类    }}
自定义的扩展类;需要重写getAlias方法返回DI的别名;通常就是去掉Extension后缀的(eg AcmeHelloExtension-->acme_hello)class CustomerExtension extends Extension{    /**     * {@inheritdoc}     * load方法所有和extension相关的配置,服务将要被加载     *     */    public function load(array $configs, ContainerBuilder $container)    {        //有 YamlFileLoader, PhpFileLoader,IniFileLoader.        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));        $loader->load('services.yml');    }    public function getAlias()    {        return 'acme_hello';    }}

转载于:https://my.oschina.net/u/729139/blog/543056

你可能感兴趣的文章
不要在构造中做太多事情,不然有时候会出现有意思的代码~
查看>>
IIS 发布网站遇到的问题
查看>>
NuGet学习笔记(2)——使用图形化界面打包自己的类库
查看>>
xcode中没有autoSizing的设置
查看>>
字符编码
查看>>
企业应用:应用层查询接口设计
查看>>
浅谈Excel开发:十 Excel 开发中与线程相关的若干问题
查看>>
nfd指令的详细说明
查看>>
安装VisualSvn Server时遇到的问题
查看>>
不用Visual Studio,5分钟轻松实现一张报表
查看>>
人脸识别 开放书籍 下载地址
查看>>
Notepad++配置Python开发环境
查看>>
用户组概念 和 挂载 概念
查看>>
如何快速获取ADO连接字符串
查看>>
AspNetPager控件的最基本用法
查看>>
sessionKey
查看>>
高性能Javascript--脚本的无阻塞加载策略
查看>>
Java 编程的动态性, 第4部分: 用 Javassist 进行类转换--转载
查看>>
完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三
查看>>
iOS8 Push Notifications
查看>>