mrgoodbytes8667 / enum-serializer-bundle
一个用于在Symfony中启用spatie/enum序列化支持的扩展包
v5.0.2
2024-07-03 15:39 UTC
Requires
- php: ^8.1
- illuminate/collections: ^9.13 | ^10.0 | ^11.0
- symfony/config: ^6.3 | ^7.0
- symfony/dependency-injection: ^6.3 | ^7.0
- symfony/framework-bundle: ^6.3 | ^7.0
- symfony/property-access: ^6.3 | ^7.0
- symfony/serializer: ^6.3 | ^7.0
- twig/twig: ^2.12 | ^3.0
Requires (Dev)
- ext-json: *
- fakerphp/faker: ^1.13
- rector/rector: ^0.14 | ^0.15 | ^0.16 | ^0.17
- symfony/test-pack: ^1.0.9
- symfony/var-dumper: ^6.3 | ^7.0
Conflicts
- phpunit/phpunit: <9.5
- dev-main
- 6.0.x-dev
- 5.0.x-dev
- v5.0.2
- v5.0.1
- v5.0.0
- v5.0.0-BETA1
- 4.2.x-dev
- 4.1.x-dev
- v4.1.0
- 4.0.x-dev
- v4.0.0
- v4.0.0-BETA1
- 3.2.x-dev
- v3.2.2
- v3.2.1
- v3.2.0
- 3.1.x-dev
- v3.1.1
- v3.1.0
- v3.1.0-RC2
- v3.1.0-RC1
- v3.1.0-BETA2
- v3.1.0-BETA1
- 3.0.x-dev
- v3.0.0
- v3.0.0-RC1
- v3.0.0-BETA3
- v3.0.0-BETA2
- v3.0.0-BETA1
- v3.0.0-ALPHA1
- 2.2.x-dev
- v2.2.0-BETA2
- v2.2.0-BETA1
- 2.1.x-dev
- v2.1.0
- v2.1.0-RC1
- v2.1.0-BETA2
- v2.1.0-BETA1
- 2.0.x-dev
- v2.0.0
- v2.0.0-RC2
- v2.0.0-RC1
- v2.0.0-BETA1
- 1.7.x-dev
- v1.7.0
- 1.6.x-dev
- v1.6.0
- 1.5.x-dev
- v1.5.0
- 1.4.x-dev
- v1.4.0
- v1.3.4
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.3
- v1.2.1
- v1.2.0
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2024-09-26 15:32:16 UTC
README
一个扩展包,提供一些PHP 8.1+枚举的辅助方法,灵感来源于spatie/enum
从5.x升级到6.0
- 默认情况下,EnumNormalizer将不再作为服务注册。您必须手动启用它以继续使用。它将在v7版本中删除。
从3.x升级到4.0
- 用ValueResolvers替换任何对
Bytes\EnumSerializerBundle\Request\EnumParameterConverter
的使用。请参阅https://symfony.com.cn/doc/current/controller/value_resolver.html
从2.x升级到3.0
- 将过时的对
easyAdminChoices()
和formChoices()
的调用替换为provideFormChoices()
。 - 升级任何重写的
provideFormChoices()
、getFormChoiceKey()
和getFormChoiceValue()
从protected
到public
。
升级到2.0
将所有继承自Bytes\EnumSerializerBundle\Enums\Enum
的类改为字符串支持的枚举,使用新的Bytes\EnumSerializerBundle\Enums\StringBackedEnumTrait
特性和实现新的Bytes\EnumSerializerBundle\Enums\StringBackedEnumInterface
接口。
Bytes\EnumSerializerBundle\Enums\StringBackedEnumTrait
提供了与枚举切换相关的先前Enum
类方法,包括一个jsonSerializable()
方法以保持序列化的一致性。Bytes\EnumSerializerBundle\Enums\StringBackedEnumInterface
必须实现(或\JsonSerializable
),以便序列化器能够正确返回标签/值,就像2.0之前一样。- 注意:
Bytes\EnumSerializerBundle\Enums\StringBackedEnumInterface
同时扩展了Bytes\EnumSerializerBundle\Enums\EasyAdminChoiceEnumInterface
和Bytes\EnumSerializerBundle\Enums\FormChoiceEnumInterface
,这两个接口都自动提供了与EasyAdminBundle和Symfony表单兼容的选择方法,并且易于覆盖。
之前
<?php namespace Bytes\EnumSerializerBundle\Tests\Fixtures; use Spatie\Enum\Enum; /** * @method static self streamChanged() * @method static self userChanged() */ class ValuesEnum extends Enum { /** * @return string[] */ protected static function values(): array { return [ 'streamChanged' => 'stream', 'userChanged' => 'user', ]; } }
之后
<?php namespace Bytes\EnumSerializerBundle\Tests\Fixtures; use Bytes\EnumSerializerBundle\Enums\StringBackedEnumInterface; use Bytes\EnumSerializerBundle\Enums\StringBackedEnumTrait; enum ValuesEnum: string implements StringBackedEnumInterface { use StringBackedEnumTrait; case streamChanged = 'stream'; case userChanged = 'user'; }
带有可选的PHPStorm弃用替换
<?php namespace Bytes\EnumSerializerBundle\Tests\Fixtures; use Bytes\EnumSerializerBundle\Enums\StringBackedEnumInterface; use Bytes\EnumSerializerBundle\Enums\StringBackedEnumTrait; use JetBrains\PhpStorm\Deprecated; enum ValuesEnum: string implements StringBackedEnumInterface { use StringBackedEnumTrait; case streamChanged = 'stream'; case userChanged = 'user'; #[Deprecated(reason: 'since 1.7.0, use "%name%" instead.', replacement: '%class%::%name%')] public static function streamChanged(): ValuesEnum { return ValuesEnum::streamChanged; } #[Deprecated(reason: 'since 1.7.0, use "%name%" instead.', replacement: '%class%::%name%')] public static function userChanged(): ValuesEnum { return ValuesEnum::userChanged; } }
请注意,自动替换将不会删除函数后面的尾随()
安装
确保已全局安装Composer,如Composer文档的安装章节中所述。
使用Symfony Flex的应用程序
打开命令行,进入您的项目目录并执行以下命令
$ composer require mrgoodbytes8667/enum-serializer-bundle
不使用Symfony Flex的应用程序
步骤1:下载扩展包
打开命令行,进入您的项目目录并执行以下命令以下载此扩展包的最新稳定版本
$ composer require mrgoodbytes8667/enum-serializer-bundle
步骤2:启用扩展包
然后,通过将其添加到项目中config/bundles.php
文件中注册的扩展包列表中,来启用扩展包
// config/bundles.php return [ // ... Bytes\EnumSerializerBundle\BytesEnumSerializerBundle::class => ['all' => true], ];
许可协议
受spatie/enum包的启发并基于此。