2017 © Pedro Peláez
 

library marshaller

Generic marshalling component. Provides functionality to transform data from one form to another and vice versa.

image

sparkcentral/marshaller

Generic marshalling component. Provides functionality to transform data from one form to another and vice versa.

  • Wednesday, August 5, 2015
  • by pulyaevskiy
  • Repository
  • 3 Watchers
  • 0 Stars
  • 2,789 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 2 % Grown

The README.md

Marshaller

Generic marshalling component. Provides functionality to transform data from one form to another and vice versa., (*1)

Build Status, (*2)

There are many use cases where marshalling can be useful. Most of them though would be about taking snapshot of all properties of an object and sending it to some external system (database for persistence or browser as body of HTTP response)., (*3)

Usually this "source" data can not be send "as is" and needs to be transformed. In very simple case: your object properties may be named in "camelCase" style and your database table field names are "underscore_separated". In practice there are many more reasons for such or similar transformations., (*4)

Marshaller provides simple framework for transforming data back and forth between "source" and "destination" formats., (*5)

Features

  • Supports transformations in both directions (marshalling/unmarshalling)
  • Flexible definition of schema with rules for data transformation
  • Support for different input and output formats. Built-in support for arrays and stdClass objects.

Dependencies

  • PHP >= 5.6.0

Basic example

<?php

// Pseudo-implementation of class encapsulating interactions with MySQL.
class UserMysqlDataGateway
{
    use Marshaller;

    /**
     * Assumption that code calling this method extracted User data from entity
     * instance and passed in this $userData argument.
     */
    public function put(\stdClass $userData)
    {
        // Default behaviour is to get all non-static properties and build
        // a map in such way that result of marshalling would contain all data
        // untouched (passed through) but keys would be underscore separated
        // instead of camelCase.
        $schema = SchemaBuilder::fromClassProperties(User::class)->build();
        $record = $this->marshal($userData, $schema);
        $this->mysql->insert($record);
    }

    public function findById($id)
    {
        $record = $this->mysql->fetch('users', $id);
        $schema = SchemaBuilder::fromClassProperties(User::class)->build();
        return $this->unmarshal($record, $schema);
    }
}

The Versions

05/08 2015

0.x-dev

0.9999999.9999999.9999999-dev

Generic marshalling component. Provides functionality to transform data from one form to another and vice versa.

  Sources   Download

MIT

The Requires

  • php >=5.6.0

 

The Development Requires

by Sparkcentral Engineering

04/08 2015

dev-master

9999999-dev

Generic marshalling component. Provides functionality to transform data from one form to another and vice versa.

  Sources   Download

MIT

The Requires

  • php >=5.6.0

 

The Development Requires

by Sparkcentral Engineering