kdabrow / enum-settings
通过属性提供的设置扩展枚举
1.0.0
2023-12-13 14:56 UTC
Requires
- php: >=8.1
Requires (Dev)
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2024-09-13 16:56:36 UTC
README
通过属性提供的设置扩展枚举。
安装
composer require kdabrow/enum-settings
如何使用它
准备枚举
将特质UseAttributeSettings添加到您的枚举中,并实现属性到枚举案例。可以使用多个属性。
use \Kdabrow\EnumSettings\UseAttributeSettings; enum Countries { use UseAttributeSettings; #[CountrySettings('polish', 38)] case poland; #[CountrySettings('spanish', 47)] case spain; }
您的属性类可能看起来像这样。名称应以'Settings'结尾,但可自定义。
#[\Attribute] class CountrySettings { public function __construct( public readonly string $language, public readonly int $population, ) {} }
用法
获取所有可用设置
Countries::poland->getSettings(); // return array with all settings [ 'language' => 'polish', 'population' => 38, ]
获取一个设置
Countries::poland->getSetting('population'); // return value of population setting 38
自定义
可以设置属性名称。例如,您有属性:Details和Cities
use \Kdabrow\EnumSettings\UseAttributeSettings; enum Countries { use UseAttributeSettings; public function settingsAttributeName() { return [Details::class, Cities::class]; } #[Details('polish', 38)] #[Cities('Warsaw', 'Cracow', 'Gdansk')] case poland; #[Details('spanish', 47)] #[Cities('Madrid', 'Barcelona', 'Valencia')] case spain; }
测试
vendor/bin/phpunit