opensoft/opensoft-simple-serializer-bundle

Symfony bundle for a simple-serializer library

2.0.1 2018-01-23 16:05 UTC

This package is not auto-updated.

Last update: 2024-03-16 11:14:48 UTC


README

Introduction

OpensoftSimpleSerializerBundle is wrapper for simple-serializer library.

Build Status Total Downloads Latest Stable Version Scrutinizer Quality Score

Installation

Using Composer (recommended)

To install OpensoftSimpleSerializerBundle with Composer just add the following to your composer.json file:

// composer.json
{
    // ...
    require: {
        // ...
        "opensoft/opensoft-simple-serializer-bundle": "1.0.*"
    }
}

Then, you can install the new dependencies by running Composer’s update command from the directory where your composer.json file is located:

$ php composer.phar update

Composer will automatically download all required files, and install them for you. All that is left to do is to update your AppKernel.php file, and register the new bundle:

<?php
// in AppKernel::registerBundles()
$bundles = array(
    // ...
    new Opensoft\Bundle\SimpleSerializerBundle\OpensoftSimpleSerializerBundle($this),
    // ...
);

Using the deps file (Symfony 2.0.x)

Update your deps file

### SimpleSerializer library
[simple-serializer]
    git=git://github.com/opensoft/simple-serializer.git
### SimpleSerializer bundle
[OpensoftSimpleSerializerBundle]
    git=git://github.com/opensoft/OpensoftSimpleSerializerBundle.git
    target=bundles/Opensoft/Bundle/SimpleSerializerBundle

Update your AppKernel.php file, and register the new bundle:

// in AppKernel::registerBundles()
$bundles = array(
    // ...
    new Opensoft\Bundle\SimpleSerializerBundle\OpensoftSimpleSerializerBundle($this),
    // ...
);

Make sure that you also register the namespaces with the autoloader:

<?php
// app/autoload.php
$loader->registerNamespaces(array(
    // ...
    'Opensoft'  => __DIR__.'/../vendor/bundles',
    'Opensoft\\SimpleSerializer' => __DIR__.'/../vendor/simple-serializer/src',
    // ...
));

Now use the vendors script to clone the newly added repositories into your project:

$ php bin/vendors install

Configuration

OpensoftSimpleSerializerBundle requires no initial configuration to get you started.

Below you find a reference of all configuration options with their default values:

# config.yml
opensoft_simple_serializer:
    metadata:
        cache: file
        debug: "%kernel.debug%"
        file_cache:
            dir: "%kernel.cache_dir%/simple-serializer"
        # Using auto-detection, the mapping files for each bundle will be
        # expected in the Resources/config/simple-serializer directory.
        #
        # Example:
        # class: My\FooBundle\Entity\User
        # expected path: @MyFooBundle/Resources/config/simple-serializer/Entity.User.yml
        auto_detection: true
        # if you don't want to use auto-detection, you can also define the
        # namespace prefix and the corresponding directory explicitly
        directories:
            any-name:
                namespace_prefix: "My\\FooBundle"
                path: "@MyFooBundle/Resources/config/simple-serializer"
            another-name:
                namespace_prefix: "My\\BarBundle"
                path: "@MyBarBundle/Resources/config/simple-serializer"

Usage

Firstly, you could create mapping files for your objects.

# MyBundle\Resources\config\serializer\ClassName.yml
Fully\Qualified\ClassName:
    properties:
        some-property:
            expose: false
            type: string
            serialized_name: foo
            since_version: 1.0
            until_version: 2.0
            groups: ['get','patch']

Below you find a reference of all configuration options for property:

  • expose
  • true
  • false (default)
  • type
  • integer
  • boolean
  • double
  • string
  • array
  • T - fully qualified class name
  • array<T>
  • DateTime (default format is ISO8601)
  • DateTime<format>
  • format could be name of DateTime constant (COOKIE, ISO8601) or string
  • serialized_name
  • default value is equal name property
  • since_version
  • string
  • until_version
  • string
  • groups
  • array

Then you could use "simple_serializer" service.

<?php
//serialization
$serializer = $container->get('simple_serializer');
$string = $serializer->serialize($object);
//Serialize array of the objects
$string = $serializer->serialize(array($object));
//Serialize specific groups
$serializer->setGroups(array('get'));
$string = $serializer->serialize($object);
//Serialize specific version
$serializer->setVersion('1.0');
$string = $serializer->serialize($object);
//deserialization
$object = $serializer->unserialize($jsonData, $object);
//Unserialize array of the objects
$objects = $serializer->unserialize($jsonData, array($object));
//Unserialize specific groups
$serializer->setGroups(array('get'));
$object = $serializer->unserialize($jsonData, $object);
//Unserialize specific version
$serializer->setVersion('1.0');
$object = $serializer->unserialize($jsonData, $object);
//Strict unserialize mode
$serializer->setStrictUnserializeMode(2);
$object = $serializer->unserialize($jsonData, $object);
//Medium Strict unserialize mode
$serializer->setStrictUnserializeMode(1);
$object = $serializer->unserialize($jsonData, $object);
//Non-Strict unserialize mode
$serializer->setStrictUnserializeMode(0);
$object = $serializer->unserialize($jsonData, $object);