elao/enum
Opinionated extensions for PHP 8.1+ native enums with readable labels, flag/bitmask enums, and extra values. Includes integrations for Symfony (Forms, HTTP Kernel arg resolver, Translation, VarDumper), Doctrine ORM/ODM, and Faker.
[cdb7f38] feature #246 Add support for Symfony 8.0, drop support for Symfony < 6.4 (@ker0x) [9d00ebf] minor #249 Prepare 3.0: bump requirements, remove deprecated code, add upgrade guide (@ogizanagi)
[4c9e508] minor #248 Deprecate BackedEnumFromQuery in favor of Symfony's MapQueryParameter (@ogizanagi)
[ffe6667] minor #241 Simplified hasFlags. (@laurentmuller) [a1e09f8] bug #242 Add nullable type declaration for default null value (@ker0x)
[d44e139] minor #239 Simplify FlagBag guards (@ogizanagi) [0e67f9b] minor #237 Updated the FlagBag templates. (@laurentmuller)
[25382e9] minor #235 Conflict broken DBAL 4 versions (@michnovka)
[a1e8c52] minor #229 Fix code example (@eliashaeussler) [503a7fb] feature #232 DBAL4 changes (@michnovka, @ogizanagi)
[bd65e9e] feature #227 Bump dependencies. test against symfony 7 (@michnovka)
[8b09a3a] feature #224 Implementation of the translatable interface. (laurentmuller) [a64a1fa] bug #215 Fix AbstractEnumType convertToDatabase function to support string|int (michnovka)
[7266715] minor #196 Add context to (de)normalizer support check (mbrodala) [dce599d] minor #209 Bump github workflows, fix mongodb Windows (michnovka) [d6d138b] feature #210 Strong typed function params and return types (michnovka) [f4a08aa] minor #216 allow int enum to be normalized as int (maximecolin) [400030f] bug #218 [Validator] Fix 1.x enum constraint with named arguments (ogizanagi) [d555de9] feature #219 Add phpstan (benji07, ogizanagi)
[400030f] bug #218 [Validator] Fix 1.x enum constraint with named arguments (ogizanagi)
[306c78d] minor #189 [Docs] Explain how to use enums with Doctrine ORM QueryBuilder (pluk77) [7266715] minor #196 Add context to (de)normalizer support check (mbrodala) [f4a08aa] minor #216 allow int enum to be normalized as int (maximecolin)
[96c2be4] minor #208 Removed unused bin reference in composer.json (michnovka)
[d32d60a] bug #205 [HttpKernel] Move the backed enum value resolver deprecation trigger to the constructor (ogizanagi)
[b20e8e8] minor #198 [CI] Update edges (@ogizanagi) [e0bc146] minor #200 [CI] Fix Github Actions deprecations (@ogizanagi) [a7aeecc] minor #202 [Tests] Remove unnecessary 6.2 config (@ogizanagi) [74ba8a2] minor #204 Remove obsolete dump JS enum binary (@ogizanagi) [baae644] feature #201 [Readable] Allow to configure a common suffix/prefix & use the enum case value/name as default label (@ogizanagi)
[306c78d] minor #189 [Docs] Explain how to use enums with Doctrine ORM QueryBuilder (@pluk77) [52b33dd] minor #193 Fix PhpStan issue with FlagBag missing template on static methods (@laurentmuller) [a296673] bug #197 Fix #[EnumCase] inheritance to set & get extras (@ogizanagi)
This is a complete rewrite of the library to leverage & add new capabilities over new PHP 8.1 native enums. Some features are still awaited (https://github.com/Elao/PhpEnums/issues/124), but the main interfaces should not change by now, and the library will be improved in the next minor releases.
Thanks to every contributor who helped moving forward to this new version 🎉 ✨
[e841eb6] feature #165 V2: Rewrite with PHP 8.1 enums (@ogizanagi) [0bc5a0b] feature #167 Add VarDumper caster for readables (@ogizanagi) [e4dacde] feature #168 Add VarDumper caster for flag bag (@ogizanagi) [2aefece] feature #169 [HttpKernel] Add a controller argument resolver for backed enums (@ogizanagi) [55781e1] minor #171 [Docs] Mention the official Doctrine ORM integration (@ogizanagi) [7d08ee2] minor #173 fix phpstan phpdoc (@Kleinast) [ec16823] bug #174 Override the block prefix (@benji07) [c447d57] minor #175 Throw bad method call on attempt to call ReadableEnumTrait::readableForValue on non backed enum (@ogizanagi) [1a1c3d6] feature #170 Allow to provide extra values to EnumCase attribute (@ogizanagi) [27e0c46] feature #177 add Faker provider (@IonBazan, @ogizanagi) [ad2d4fd] feature #176 Add Doctrine ODM integration (@IonBazan) [98a03f3] feature #181 Add FlagBag::fromAll to instantiate a bag with all of its flags (@michnovka) [7600213] feature #183 FlagBagType support (@michnovka) [e623ba2] feature #182 Add SQL Enum support (@michnovka, @ogizanagi) [7a6c730] feature #186 Initial DBAL FlagBag support (@michnovka) [e6735d6] minor #187 Add missing ODM extensions test + XSD types (@ogizanagi)
[e841eb6] feature #165 V2: Rewrite with PHP 8.1 enums (ogizanagi) [0bc5a0b] feature #167 Add VarDumper caster for readables (ogizanagi) [e4dacde] feature #168 Add VarDumper caster for flag bag (ogizanagi) [2aefece] feature #169 [HttpKernel] Add a controller argument resolver for backed enums (ogizanagi) [55781e1] minor #171 [Docs] Mention the official Doctrine ORM integration (ogizanagi) [7d08ee2] minor #173 fix phpstan phpdoc (Kleinast) [ec16823] bug #174 Override the block prefix (benji07) [c447d57] minor #175 Throw bad method call on attempt to call ReadableEnumtrait::readableForValue on non backed enum (ogizanagi) [1a1c3d6] feature #170 Allow to provide extra values to EnumCase attribute (ogizanagi) [27e0c46] feature #177 add Faker provider (IonBazan, ogizanagi) [ad2d4fd] feature #176 Add Doctrine ODM integration (IonBazan) [98a03f3] feature #181 Add FlagBag::fromAll to instantiate a bag with all of its flags (michnovka) [7600213] feature #183 FlagBagType support (michnovka) [e623ba2] feature #182 Add SQL Enum support (michnovka, ogizanagi)
Since v2.0.0-beta.2:
[7a6c730] feature #186 Initial DBAL FlagBag support (@michnovka) [e6735d6] minor #187 Add missing ODM extensions test + XSD types (@ogizanagi)
[98a03f3] feature #181 Add FlagBag::fromAll to instantiate a bag with all of its flags (@michnovka) [7600213] feature #183 FlagBagType support (@michnovka) [e623ba2] feature #182 Add SQL Enum support (@michnovka, @ogizanagi)
[27e0c46] feature #177 add Faker provider (@IonBazan, @ogizanagi) [ad2d4fd] feature #176 Add Doctrine ODM integration (@IonBazan)
Full Changelog: https://github.com/Elao/PhpEnums/compare/v2.0.0-alpha.3...v2.0.0-beta.1
[c447d57] minor #175 Throw bad method call on attempt to call ReadableEnumtrait::readableForValue on non backed enum (@ogizanagi) [1a1c3d6] feature #170 Allow to provide extra values to EnumCase attribute (@ogizanagi)
Full Changelog: https://github.com/Elao/PhpEnums/compare/v2.0.0-alpha.1...v2.0.0-alpha.3
[7d08ee2] minor #173 fix phpstan phpdoc (@Kleinast)
Full Changelog: https://github.com/Elao/PhpEnums/compare/v1.17.0...v1.17.1
[55781e1] minor #171 [Docs] Mention the official Doctrine ORM integration (@ogizanagi) [ec16823] bug #174 Override the block prefix (@benji07)
Full Changelog: https://github.com/Elao/PhpEnums/compare/v2.0.0-alpha.1...v2.0.0-alpha.2
[e841eb6] feature #165 V2: Rewrite with PHP 8.1 enums (@ogizanagi)
Which includes:
[0bc5a0b] feature #167 Add VarDumper caster for readables (@ogizanagi) [e4dacde] feature #168 Add VarDumper caster for flag bag (@ogizanagi) [2aefece] feature #169 [HttpKernel] Add a controller argument resolver for backed enums (@ogizanagi)
[9440cbd] minor #155 [CI] Use Flex for testing multiple Symfony versions (@ogizanagi) [ed782a9] minor #156 Fix 5.4 deprecs & types (@ogizanagi) [bbc7f2e] feature #157 Allow Symfony 6 (@ogizanagi) [f2e761a] feature #132 Support default value for generated Doctrine types (@mbrodala) [a27eece] feature #158 Support for denormalizing XML to an integer Readable enum (@ogizanagi) [40a1a5a] minor #159 [CI] Limit mongo tests to edges checks (@ogizanagi)
[0d11457] minor #160 Fix typo (extra backtick character) in README (@sarim) [1c944e3] bug #162 Do not trigger a deprecation on FQCN as both keys and values in Doctrine types config (@ogizanagi) [33cfb10] minor #163 [CI] Prepare for next SF & PHP versions (@ogizanagi) [89772dd] minor #164 [Docs] Hints about the PHPStan annotations (@ogizanagi)
Full Changelog: https://github.com/Elao/PhpEnums/compare/v1.16.0...v1.17.0
This version fixes Symfony 5.4 types deprecations and allows Symfony 6. A minor BC break is expected if you extended some of the DBAL type methods, due to #156.
This release also adds support for Doctrine DBAL types default value on null from configuration, as well as better support for XML/CSV denormalization of integer based enums.
[bbc7f2e] feature #157 Allow Symfony 6 (@ogizanagi) [f2e761a] feature #132 Support default value for generated Doctrine types (@mbrodala) [a27eece] feature #158 Support for denormalizing XML to an integer Readable enum (@ogizanagi) [9440cbd] minor #155 [CI] Use Flex for testing multiple Symfony versions (@ogizanagi) [ed782a9] minor #156 Fix 5.4 deprecs & types (@ogizanagi) [40a1a5a] minor #159 [CI] Limit mongo tests to edges checks (@ogizanagi)
Full Changelog: https://github.com/Elao/PhpEnums/compare/v1.16.0...v1.17.0-beta.1
[7d4cb3c] bug #150 fix collection enum types for ODM (@IonBazan) [345586f] feature #153 add native jsonSerialize (@IonBazan) [075003f] bug #152 handle readable enums that contain values which need escaping in javascript (@bendavies)
[f7308ab] minor #144 improve return types phpdocs (@IonBazan) [097c995] feature #146 add Stringable interface (@IonBazan) [e8e3c73] feature #145 Add Doctrine ODM bridge (@IonBazan) [c533ec1] minor #147 Don't always require mongodb for tests (@ogizanagi)
[baf6165] bug #139 138: Fix Api Platform swagger documentation for nullable enum (@romain-coiffard) [5b57142] bug #141 Add requiresSQLCommentHint to AbstractJsonCollectionEnumType (@notFloran)
[accf9f5] minor #127 Fix return type for Enum::instances() (devster) [bee09af] minor #131 Fix phpdoc return types (IonBazan)
[32a9e1a] minor #128 Document usage with easy admin 3 bundle (pluk77, ogizanagi) [ac3b8e1] minor #133 Use GitHub Actions (IonBazan) [a1717cc] minor #137 fixing Windows tests (IonBazan) [0fbdccf] minor #136 [CI] Add dedicated lint job + minor workflow tweaks (ogizanagi)
How can I help you explore Laravel packages today?