c33s/symfony-config-manipulator-bundle

此包已被废弃,不再维护。没有建议的替代包。

自动组织Symfony2 YAML配置文件的实用工具

v0.3.0 2016-06-20 16:56 UTC

This package is not auto-updated.

Last update: 2019-07-29 15:18:00 UTC


README

Build Status SensioLabsInsight codecov.io

你是否讨厌将大量配置信息堆放在单个config.yml文件中,导致无法追踪文件内的所有部分?那么这个工具就是为你准备的!

此包提供了一些通用的YAML和Symfony配置操作任务。最重要的是将Symfony app/config/config*.yml文件拆分为单独的部分,形成如下结构:

# Symfony Standard Edition 2.7.3

app/config
├── config
│   ├── assetic.yml
│   ├── doctrine.yml
│   ├── framework.yml
│   ├── parameters.yml
│   ├── swiftmailer.yml
│   └── twig.yml
│
├── config_dev
│   ├── assetic.yml
│   ├── framework.yml
│   ├── monolog.yml
│   ├── swiftmailer.yml
│   └── web_profiler.yml
│
├── config_prod
│   ├── doctrine.yml
│   ├── framework.yml
│   └── monolog.yml
│
├── config_test
│   ├── framework.yml
│   ├── swiftmailer.yml
│   └── web_profiler.yml
│
├── config_dev.yml
├── config_prod.yml
├── config_test.yml
├── config.yml
│
│   # parameters.yml, routing.yml, security.yml etc. will never be touched
├── parameters.yml
├── parameters.yml.dist
├── routing_dev.yml
├── routing.yml
├── security.yml
└── services.yml

清理后的config.yml看起来像这样

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }
    - { resource: config/assetic.yml }
    - { resource: config/doctrine.yml }
    - { resource: config/framework.yml }
    - { resource: config/parameters.yml }
    - { resource: config/swiftmailer.yml }
    - { resource: config/twig.yml }

config_dev.yml内容

imports:
    - { resource: config.yml }
    - { resource: config_dev/assetic.yml }
    - { resource: config_dev/framework.yml }
    - { resource: config_dev/monolog.yml }
    - { resource: config_dev/swiftmailer.yml }
    - { resource: config_dev/web_profiler.yml }

优势

  • 只需查看子文件夹,即可了解哪些配置模块存在
  • 通过在Git仓库中保持单独的文件,您可以轻松追踪特定配置部分的变化
  • 当主config.yml文件不会被多人同时编辑时,在大型团队中工作会变得容易一些
  • 配置部分以YAML文本的形式复制,而不是数组数据,因此所有注释和格式都得到保留!
  • 以编程方式操作特定配置部分变得更加容易

安装

在您的composer.json文件中要求c33s/symfony-config-manipulator-bundle

{
    "require": {
        "c33s/symfony-config-manipulator-bundle": "@stable",
    }
}

或者,如果您正在使用composer-yaml

require:
    c33s/symfony-config-manipulator-bundle:     '@stable'

app/AppKernel.php中注册该包


    // app/AppKernel.php

    public function registerBundles()
    {
        return array(
            // ... existing bundles
            new C33s\SymfonyConfigManipulatorBundle\C33sSymfonyConfigManipulatorBundle(),
        );
    }

使用

您只需运行一条命令即可

$ php app/console config:refresh-files

您可以在任何时候重新运行它。如果您正在向项目中添加新的配置部分,这将非常有用。只需将它们粘贴到主config.ymlconfig_dev.yml或类似的文件中,然后运行命令即可立即将新配置移动到单独的文件中。

如果您向config.yml添加了已存在于具有相同名称的单独文件中的配置部分,则命令将退出并显示错误信息。手动合并您的配置,然后一切正常。

安全性

只要模块配置文件包含可解析的YAML,配置拆分器就永远不会覆盖任何现有文件。但是,根据墨菲定律,可能会有一些意外出现的错误。

请确保将配置文件提交到您的Git仓库,以保持代码的安全!