Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Enum Serializer Bundle Laravel Package

aboutcoders/enum-serializer-bundle

Symfony bundle adding JMS Serializer support for myclabs/php-enum enums. Register enum types via config or tagged services, then serialize/deserialize to JSON using enum class names in @Type annotations or directly in serializer calls.

View on GitHub
Deep Wiki
Context7

AbcEnumSerializerBundle

A symfony bundle to serialize/deserialize enumerations of type myclabs/php-enum with jms/serializer.

Build Status: Build Status

Note: At this point json is the only supported format.

Installation

Add the AbcEnumSerializerBundle to your composer.json file:

php composer.phar require aboutcoders/enum-serializer-bundle

Include the bundle in the AppKernel.php class:

# app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        ...
        new Abc\Bundle\EnumSerializerBundle\AbcEnumSerializerBundle(),
    );
}

Usage

Define the enum as defined by myclabs/php-enum:

namespace Acme;

use MyCLabs\Enum\Enum;

class MyEnum
{
    const VALUE_1;
    const VALUE_2;
}

In order to serialize/deserialize the enumeration you can register the type in app/config.yml

# app/config/config.yml
abc_enum_serializer:
    serializer:
        types:
            - Acme\MyEnum

or you can register the enum within the service container and tag it with with the tag abc.enum

services:
    my_enum:
        class: Acme\MyEnum
        tags:
            - { name: abc.enum }

Note, this service should be declared private and should never be instantiated, since this would lead to an exception. The only purpose of this service is to provide the fully qualified name of the class that needs to be registered as enum type.

Finally you can configure the type in case you use it as a member variable

use JMS\Serializer\Annotation\Type;

class MyExample
{

    /**
     * @Type("Acme\MyEnum")
     */
    private $myEnum;

}

or serialize/deserialize it directly referencing the type:


$serializer = $container->get('jms_serializer');

$data = $serializer->serialize($subject, 'json');

$enum = $this->serializer->deserialize($data, MyExample::class, 'json');

ToDo

  • Add support for the formats XML and YAML
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
besmartand-pro/php-quality-config
sentix/ai-chatbot
codifyo/ts-generator-bundle
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor