PHPackages                             cnastasi/serializer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. cnastasi/serializer

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

cnastasi/serializer
===================

A experimental serializer using php 7.4 typed properties and reflection

v0.11.1(5y ago)030.9k↑12.3%1[1 PRs](https://github.com/cnastasi/serializer/pulls)1proprietaryPHPPHP &gt;=7.4CI passing

Since Jun 27Pushed 3mo ago2 watchersCompare

[ Source](https://github.com/cnastasi/serializer)[ Packagist](https://packagist.org/packages/cnastasi/serializer)[ RSS](/packages/cnastasi-serializer/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)Dependencies (3)Versions (19)Used By (1)

[![Maintainability](https://camo.githubusercontent.com/ed3382275c104d6d2cd32af564405d0c311d6a30c6b23a98586c814b4b523467/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f62326366326331353938313834303637613364352f6d61696e7461696e6162696c697479)](https://codeclimate.com/github/cnastasi/serializer/maintainability)[![Test Coverage](https://camo.githubusercontent.com/60dda5ec4de6ed09a1642fffd37d4576be787db97e2fa8fa71e8c1897ef270fd/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f62326366326331353938313834303637613364352f746573745f636f766572616765)](https://codeclimate.com/github/cnastasi/serializer/test_coverage)

Serializer
==========

[](#serializer)

It permits to serialize and unserialize value objects.

- *Simple Objects:* With just a primitive inside
- *Composite Objects:* Objects formed by composition of two or more Simple Objects
- *Collections:* Objects formed by a collection of Simple or Composite objects

### How to install

[](#how-to-install)

### How to use

[](#how-to-use)

#### Serialize a simple value object

[](#serialize-a-simple-value-object)

```
use CNastasi\Serializer\Serializer\SimpleValueObjectSerializer;
use CNastasi\Example\Age;

$serializer = new SimpleValueObjectSerializer();

// $result === 37
$result = $serializer->serialize(new Age(37));
```

#### Unserialize a simple value object

[](#unserialize-a-simple-value-object)

```
use CNastasi\Serializer\Unserializer\SimpleValueObjectUnserializer;
use CNastasi\Example\Age;

$serializer = new SimpleValueObjectUnserializer();

// $result === Age(37)
$result = $serializer->unserialize(37, Age::class);
```

#### Complex example

[](#complex-example)

```
require_once 'vendor/autoload.php';

use CNastasi\Example\Address;
use CNastasi\Example\Age;
use CNastasi\Example\Name;
use CNastasi\Example\Person;
use CNastasi\Example\Phone;
use CNastasi\Serializer\Serializer\CompositeValueObjectSerializer;
use CNastasi\Serializer\Serializer\SimpleValueObjectSerializer;
use CNastasi\Serializer\DefaultSerializer;

// Initialize the Serializer
$simpleValueObjectSerializer    = new SimpleValueObjectSerializer();
$compositeValueObjectSerializer = new CompositeValueObjectSerializer($simpleValueObjectSerializer);

$serializer = new DefaultSerializer([$simpleValueObjectSerializer, $compositeValueObjectSerializer]);

// Create your domain objects
$age     = new Age(37);  // A simple one
$address = new Address('145 Main Street', 'New York'); // A composite

// A composite and complex, with nullable and recursion
$person = new Person(
    new Name ('Christian Nastasi'),
    new Age(37),
    new Address('42 Somewhere Street', 'World'),
    new Phone('+39 123456754')
);

// Serialize the objects
var_dump($serializer->serialize($age));
/*
 * int(37)
 */

var_dump($serializer->serialize($address));
/*
 * array(2) {
 *    'street' => string(15) "145 Main Street"
 *    'city'   => string(8) "New York"
 * }
 */

var_dump($serializer->serialize($person));
/*

  array(5) {
    'name'    => string(17) "Christian Nastasi"
    'age'     => int(37)
    'address' => array(2) {
       'street' => string(19) "42 Somewhere Street"
       'city'   => string(5) "World"
     }
    'phone'  => string(13) "+39 123456754"
    'parent' => array(5) {
       'name' => string(17) "Christian Nastasi"
       'age'  => int(37)
       'address' => array(2) {
          'street' => string(19) "42 Somewhere Street"
          'city'   => string(5) "World"
       }
       'phone' => string(13) "+39 123456754"
       'parent' => NULL
    }
  }

 */
```

###  Health Score

41

—

FairBetter than 89% of packages

Maintenance53

Moderate activity, may be stable

Popularity30

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 88.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~15 days

Recently: every ~4 days

Total

17

Last Release

1908d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/10b75e2cb39cb0beafd94238c476a67ea60b23b102eb66d5068138a1114baa08?d=identicon)[cnastasi](/maintainers/cnastasi)

---

Top Contributors

[![cnastasi](https://avatars.githubusercontent.com/u/2204693?v=4)](https://github.com/cnastasi "cnastasi (32 commits)")[![emnlmn](https://avatars.githubusercontent.com/u/32902406?v=4)](https://github.com/emnlmn "emnlmn (3 commits)")[![fabiov](https://avatars.githubusercontent.com/u/2004589?v=4)](https://github.com/fabiov "fabiov (1 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/cnastasi-serializer/health.svg)

```
[![Health](https://phpackages.com/badges/cnastasi-serializer/health.svg)](https://phpackages.com/packages/cnastasi-serializer)
```

###  Alternatives

[masterminds/html5

An HTML5 parser and serializer.

1.8k242.8M229](/packages/masterminds-html5)[sabberworm/php-css-parser

Parser for CSS Files written in PHP

1.8k191.2M65](/packages/sabberworm-php-css-parser)[jms/metadata

Class/method/property metadata management in PHP

1.8k152.8M88](/packages/jms-metadata)[jms/serializer-bundle

Allows you to easily serialize, and deserialize data of any complexity

1.8k89.3M627](/packages/jms-serializer-bundle)[hassankhan/config

Lightweight configuration file loader that supports PHP, INI, XML, JSON, and YAML files

97513.5M170](/packages/hassankhan-config)[meyfa/php-svg

Read, edit, write, and render SVG files with PHP

54613.9M42](/packages/meyfa-php-svg)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
