johnkrovitch/configuration

为 Symfony 项目提供的配置抽象类

v2.2 2022-01-28 22:16 UTC

README

为 Symfony 项目提供的配置类。此包允许您操作不可变配置对象。您可以添加自定义获取器以改进参数的 PHP 类型,或者使用默认的通用获取器。

安装

composer install johnkrovitch/configuration

v2.0: 适用于 Symfony 5.1+

v1.0: 适用于 Symfony 3.4, 4.4

使用方法

创建配置类。

<?php

use JK\Configuration\Configuration;
use Symfony\Component\OptionsResolver\OptionsResolver;

class MyConfiguration extends Configuration 
{
    public function configureOptions(OptionsResolver $resolver): void {
        // Configure your options resolver here 
        $resolver->setDefaults([
            'panda' => 'bamboo',
        ]);
    }
}

在您的服务中使用它,例如

<?php

use MyConfiguration;

class MyService {
    
    public function myMethod(array $options): void
    {
        $configuration = new MyConfiguration();
        $configuration->configure($options);

        $configuration->get('panda'); // "bamboo"
        $configuration->has('panda'); // true
        $configuration->toArray(); // ['panda' => 'bamboo']        
    }

}

您也可以提供一个选项解析器

use MyConfiguration;
use Symfony\Component\OptionsResolver\OptionsResolver;

class MyService {
    
    public function myMethod(array $options): void
    {
        $configuration = new MyConfiguration();
        $resolver = new OptionsResolver();
    
        // Do something with the resolver
        // $resolver->setDefaults('...');

        // Pass your custom resolver
        $configuration->configure($options, $resolver);

        $configuration->get('panda'); // Returns "bamboo"
        $configuration->has('panda'); // Returns true
        $configuration->toArray(); // Returns ['panda' => 'bamboo']        
    }

}

OptionsResolver

Configuration 使用 Symfony 的 OptionsResolver 组件