brettminnie/breakfast-serializer

Library for (de-)serializing data of any complexity to JSON

0.1.0 2015-07-26 17:22 UTC

This package is not auto-updated.

Last update: 2024-12-21 18:59:18 UTC


README

Build Status Scrutinizer Code Quality Dependency Status Coverage Status

A replacement for the other well known serializer, initially we were aiming for backwards compatibility, however it seemed more appropriate to develop a lightweight alternative. We are forgoing the depth of features now to offer something that is easy to configure and works well without any configuration.

Installation

$ composer require brettminnie/breakfast-serializer:0.1.*

Job done, start enjoying your morning serial!

Configuration

Out the box will do a full depth/breadth recursion and serialize to JSON format, no config is required. It will always serialize with a variable called className attached to the object. This is a fully fledged namespace and is required to deserialize. If you want to deserialize from JSON data that is missing this variable it needs to be injected into the object.

Supported Serialization Formats

  • JSON
  • XML
  • PHP Object Notation
  • YAML

Features

  • Simple limiting of traversal depth
  • Mapping of properties to alternate names and back again
  • Excluding of properties from serialization and ignoring them on deserialization
  • Simple YAML config format (Yay no slow php annotations!)

Quick and Dirty Example

   
    // To retrieve the json representation json of an object
    $jsonData = BDBStudios\BreakfastSerializer\SerializerFactory::getSerializer()
        ->serialize($myClass);
   
   // To unserialize
   $myClass = BDBStudios\BreakfastSerializer\SerializerFactory::getSerializer()
        ->deserialize($jsonData);
   
   //To serialize an object with a limited depth recursion (aka only some of it)
   $jsonData = 
      BDBStudios\BreakfastSerializer\SerializerFactory::getSerializer(
         BDBStudios\BreakfastSerializer\IsSerializable::FORMAT_JSON,
         2
      )
      ->serialize($myClass);
    

Further examples in the documentation directory.