opensoft / simple-serializer
Simple Serializer
Installs: 14 142
Dependents: 1
Suggesters: 0
Security: 0
Stars: 18
Watchers: 6
Forks: 8
Open Issues: 2
Requires
- php: >=5.3.3
- symfony/yaml: >=2.0.0
Requires (Dev)
- phpunit/phpunit: 4.0.*@stable
This package is not auto-updated.
Last update: 2024-12-16 12:06:58 UTC
README
Introduction
Simple-Serializer allows you to serialize your objects into a requested output format such as JSON. The library is written to work with DTO objects in the REST services.
Built-in features include:
- (de-)serialize object graphs
- supports boolean, integer, double, DateTime<format>, array, T, array<T>, null types, where "T" - is some PHP object.
- configurable via YAML
- three unserialize mode (non-strict, medium strict, strict)
Unserialize mode: Non-Strict mode - serializer does not check incoming parameters Medium Strict - serializer extra check incoming parameters and if they exist throw InvalidArgumentException Strict - serializer extra check incoming parameters completely as expected if there are extra arguments or missing some, it throws an exception.
Some Restrictions:
- object must have configuration for serialize/unserialize
Possible TODO list:
- (de-)serialize object graphs of any complexity including circular references
- configurable via PHP, XML, or annotations
- custom integrates with Doctrine ORM, et. al.
It should be noted that Simple-Serializer is realy simple library with minimum configuration, but it provides wide opportunity for create REST API.
Installation
To install Simple-Serializer with Composer just add the following to your composer.json
file:
// composer.json { // ... require: { // ... "opensoft/simple-serializer": "dev-master" } }
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
Configuration
MyBundle\Resources\config\serializer\ClassName.yml Fully\Qualified\ClassName: properties: some-property: expose: true type: string serialized_name: foo since_version: 1.0 until_version: 2.0 groups: ['get','patch']
- expose
- true
- false (default)
- type
- integer
- boolean
- double
- string
- array
- T - fully qualified class name
- array<T>
- DateTime
- DateTime<format>
- format could be name of DateTime constant (COOKIE, ISO8601), string or empty (default format is ISO8601)
- serialized_name
- default value is equal name property
- since_version
- string
- until_version
- string
- groups
- array
- null_skipped
- true
- false (default)
Serializing Objects
Most common usage is probably to serialize objects. This can be achieved very easily:
<?php //get Serializer $serializer = $this->getSerializer(); $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);
Deserializing Objects
You can also unserialize objects from JSON representation. For example, when accepting data via an API.
<?php //get Fully\Qualified\ClassName $object = $this->getClassName(); //get Serializer $serializer = $this->getSerializer(); $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);