ldl-framework/container-builder

将不同目录下的不同服务文件合并

dev-master 2022-06-02 11:54 UTC

README

从不同目录中找到的服务文件集合构建一个Symfony容器。服务文件本身可以写成不同的格式(yml, xml, ini 或 php)

此构建器将所有这些文件编译成一种格式(yml, xml, ini 或 php)

在一个目录中找到所有的 services.xml, services.ini, services.yml, services.php 文件,并将结果写入 out.xml
php bin/build container:build out.xml /path/to/your/project 
示例 2,找到所有的 services.xml,加载第一个 custom1.xml 和 custom2.xml
php bin/build container:build out.xml xml -d /path/to/your/project -l services.xml -f path/to/custom1.xml, /path/to/custom2.xml
示例 2,找到所有的 services.xml,通过模式匹配编译器过程
php bin/build container:build out.xml xml -d /path/to/your/project -l services.xml -p MyCompilerpass.php

编译器过程

重要:由于我们无法处理编译器过程构造函数中传递的任何内容,你必须扩展每个编译器过程到 LDLAbstractCompilerPass

控制编译器过程优先级和类型

为了使用编译器过程优先级和类型,使你的编译器过程扩展到 LDLAbstractCompilerPass

示例
<?php

use LDL\DependencyInjection\CompilerPass\LDLAbstractCompilerPass;
use Symfony\Component\DependencyInjection\Compiler\PassConfig;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class MyCompilerPass extends LDLAbstractCompilerPass
{
    public function getPriority() : int
    {
        return 0;
    }
    
    public function getType() : string
    {
        return PassConfig::TYPE_OPTIMIZE;
    }
    
    public function process(ContainerBuilder $container)
    {
        // Implement process() method.
    }
    
}

待办事项

  • 将排除的文件和目录添加到命令