GithubHelp home page GithubHelp logo

enum-serializer-bundle's Introduction

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

enum-serializer-bundle's People

Contributors

hrba avatar enumag avatar tooeo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.