Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/neutron-pro/symfony-normalizer-enum-php
Added Symfony normalizer for the enumeration system designed to be as close to PHP 8.1 for earlier versions.
https://github.com/neutron-pro/symfony-normalizer-enum-php
doctrine php php-enum php-library php7 php8 symfony
Last synced: about 1 month ago
JSON representation
Added Symfony normalizer for the enumeration system designed to be as close to PHP 8.1 for earlier versions.
- Host: GitHub
- URL: https://github.com/neutron-pro/symfony-normalizer-enum-php
- Owner: Neutron-Pro
- License: apache-2.0
- Created: 2021-07-08T21:46:26.000Z (over 3 years ago)
- Default Branch: develop
- Last Pushed: 2021-07-09T20:05:24.000Z (over 3 years ago)
- Last Synced: 2024-10-15T01:22:03.117Z (about 1 month ago)
- Topics: doctrine, php, php-enum, php-library, php7, php8, symfony
- Language: PHP
- Homepage:
- Size: 8.79 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.MD
- License: LICENSE
Awesome Lists containing this project
README
# Symfony Normalizer Enum Type
---
## Read the enum php doc:
> https://github.com/Neutron-Pro/enum-php
---
## Installation
```
composer require neutronstars/symfony-normalizer-enum-php
```### Add doctrine:
```
composer require neutronstars/doctrine-enum-php-type
```> https://github.com/Neutron-Pro/doctrine-enum-php-type
---
### Example for serialize an object entity with an enum field:
```php
/**
* @method static self WAITING()
* @method static self PUBLISHED()
*/
class MyStringEnum extends \NeutronStars\Enum\Enum {
public const WAITING = 'Waiting';
public const PUBLISHED = 'Published';
}/**
* @Entity()
*/
class Post {
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups(["post:details"])
* @var int
*/
private $id;
// ... Other field (name, createdAt, updatedAt etc..)
/**
* For the customs type, please check the doctrine enum type documentation.
* @ORM\Column(type="my_string_enum")
* @Groups(["post:details"])
* @var MyStringEnum
*/
private $state;
public function __construct() {
$this->state = MyStringEnum::WAITING();
}
// ... All methods implemented.
}/**
* @Route("/posts", name="list_post")
*/
class ListPostController {/** @var PostRepository PostRepository */
private $postRepository;
public function __construct(PostRepository $postRepository) {
$this->postRepository = $postRepository;
}public function __invoke(): JSONResponse
{
$serializer = new \Symfony\Component\Serializer\Serializer([
new \NeutronStars\Symfony\Enum\Normalizer\EnumNormalizer(MyStringEnum::class)
], [new \Symfony\Component\Serializer\Encoder\JsonEncode()]);
return new JSONResponse(
$serializer->normalize(
$this->postRepository->findAll(),
null,
[ 'groups' => ['post:details'] ]
)
);
}
}```