文档章节

如何为一个Bundle创造友好的配置

汤汤圆圆
 汤汤圆圆
发布于 2015/12/12 16:06
字数 333
阅读 15
收藏 2

###使用Bundle扩展类

在app/config/config.yml中为自己bundle配置参数
acme_demo:#这个为需要配置bundle的别名
    demo:
        client_id: 123
        client_secret: xxxx

在上一篇如何加载服务中讲到如何创建一个扩展类;在扩展类中处理这些配置参数

在load()方法中symfony自动会把YML或XML格式的配置参数转换成数组了

array(
    // values from config.yml
    array(
        'demo' => array(
            'client_id' => 123,
            'client_secret' => xxx,
        ),
    ),
    // values from config_dev.yml
    array(
        'demo' => array(
            'client_id' => 456,
        ),
    ),
)

需要注意这是一个多维数组;各种环境下加载的配置不一样;

symfony提供了方法能够让根据环境不同选择不同的参数而且还可以验证参数的正确性

####添加配置类

// src/Acme/DemoBundle/DependencyInjection/Configuration.php
namespace Acme\DemoBundle\DependencyInjection;

use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;

class Configuration implements ConfigurationInterface
{
    public function getConfigTreeBuilder()
    {
        $treeBuilder = new TreeBuilder();
        $rootNode = $treeBuilder->root('acme_social');

        $rootNode
            ->children()
                ->arrayNode('demo')
                    ->children()
                        ->integerNode('client_id')->end()#整形节点
                        ->scalarNode('client_secret')->end()#标量类型
                    ->end()
                ->end() // twitter
            ->end()
        ;

        return $treeBuilder;
    }
}

在load()方法中验证以及合并配置

public function load(array $configs, ContainerBuilder $container)
{
    $configuration = new Configuration();

    $config = $this->processConfiguration($configuration, $configs);
    // ...
}

可以让扩展类继承ConfigurableExtension来减少每次都要调用processConfiguration方法来验证合并配置

class Test2Extension extends ConfigurableExtension
{
    //注意这个方法名称不是load;
    protected function loadInternal(array $mergedConfig, ContainerBuilder $container)
    {
        // ...
    }
}

© 著作权归作者所有

汤汤圆圆

汤汤圆圆

粉丝 11
博文 82
码字总数 26299
作品 0
昌平
程序员
私信 提问
如何快速的安装自己的Maven仓库---Nexus?

Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库服务器,在代理远程仓库的同时...

chancein007
2016/03/16
0
0
android-清单小文件

一:如何创造一个activity 懒得打字了,直接上图 先这样,其中testactivity代码如下 package com.example.qingdan; import android.os.Bundle; import android.app.Activity; import android......

眉间雪
2017/11/11
0
0
React v16.9 H5 template

1、前言 本项目适用于==移动端H5==混合开发的==React项目==,功能包括: 采用VW,==字体自动适配==,默认按照UI设计稿==750*1334==(webpack里可以配置UI稿原始尺寸)上下适配各种手机设备;...

非著名程序猿
10/29
0
0
入职第二天:使用koa搭建node server是种怎样的体验

今天是我入职第二天,leader跟我说,昨天配置好了服务端渲染的文件,今天就先研究研究如何使用koa来搭建一个node server吧! 按照惯例,我去koa官网查了一下什么是koa,结果官网很简单的一句...

闰土大叔
2018/05/06
0
0
自动网络配置工具--Genesis

Genesis是一个自动化环境配置工具。它生成网络设备如交换机和路由器的配置文件,服务器操作系统和软件应用软件包。它提供了一个单一,简单办法来提供基础环境。 主要的功能包括: 简单,提供...

匿名
2008/12/05
2.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

数据流中的中位数

参考:https://sunweiguo.github.io/2019/03/18/%E5%89%91%E6%8C%87offer/%E3%80%90%E9%9D%A2%E8%AF%95%E9%A2%9863-%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95......

Garphy
28分钟前
4
0
微服务下配置管理中心 SCCA

SCCA 简介 SCCA 全称 spring-cloud-config-admin,微服务下 Spring Boot 应用(包含 Spring Cloud)统一的配置管理平台。 Github 地址:spring-cloud-config-admin 核心贡献者:程序员DD | ...

SpringForA
30分钟前
5
0
spring 是如何注入对象的和bean 创建过程分析

文章目录: beanFactory 及 bean 生命周期起步 BeanFactory refresh 全过程 BeanFactoryPostProcessor 和 BeanPostProcessor 解析 使用 BeanPostProcessor 实现 aop 和 springboot Cache 相关......

sanri1993
33分钟前
9
0
@PathVariable使用

public interface ProductInfoRepository extends JpaRepository<ProductInfo, String>{ List<ProductInfo> findByProductId(String productId);} ProductInfoController @Autowired ......

观海562
44分钟前
6
0
利用CSS禁止手机长按出现气泡: 复制、选择等功能

可以用 * ,也可作用于一个div div{  -webkit-touch-callout:none;  /*系统默认菜单被禁用*/  -webkit-user-select:none; /*webkit浏览器*/  -khtml-user-select:none; /*早期浏览...

蓝小驴
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部