johnkrovitch / configuration
为 Symfony 项目提供的配置抽象类
v2.2
2022-01-28 22:16 UTC
Requires
- php: ^8.0
- symfony/dependency-injection: ^5.3 || ^6.0
- symfony/options-resolver: ^5.4 || ^6.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-18 04:43:50 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 组件