PHPackages                             radionovel/php-hydrator - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. radionovel/php-hydrator

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

radionovel/php-hydrator
=======================

Simple object hydrator

1.0(3y ago)014BSD-3-ClausePHPPHP &gt;=7.4

Since Oct 10Pushed 3y ago1 watchersCompare

[ Source](https://github.com/radionovel/php-hydrator)[ Packagist](https://packagist.org/packages/radionovel/php-hydrator)[ RSS](/packages/radionovel-php-hydrator/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (1)Versions (2)Used By (0)

PHP Object Hydrator
===================

[](#php-object-hydrator)

The library allows to hydrate objects from an array and extract raw objects's values to an array.

Installation
------------

[](#installation)

Install with composer:

```
composer require radionovel/php-hydrator
```

Usage samples
-------------

[](#usage-samples)

Hydrating an object from an associative array:

```
$post = $this->hydrator->hydrate(Post::class, [
    'id' => $id,
    'date' => $date,
    'title' => $title,
])
```

Extracting of object values to an array by list of properies:

```
$data = $this->hydrator->extract($post, ['id', 'date', 'title'])
```

For example if we have `Post` entity:

```
class Post
{
    private $id;
    private $title;
    private $date;

    public function __construct($id, $title)
    {
        $this->id = $id;
        $this->title = $title;
        $this->date = new DateTimeImmutable();
    }

    public function getId()
    {
        return $this->id;
    }

    public function getTitle()
    {
        return $this->title;
    }
}
```

then we can use the hydrator in any repository class:

```
class SqlPostRepository implements PostRepository
{
    private $db;
    private $hydrator;

    public function get($id): Post
    {
        if (!$row = $this->db->selectOne('posts', ['id' => $id])) {
            throw new NotFoundException('Post not found.');
        }

        return $this->hydrator->hydrate(Post::class, [
            'id' => $row['id'],
            'date' => DateTimeImmutable::createFromFormat('Y-m-d', $row['create_date']),
            'title' => $row['title'],
        ]);
    }

    public function persist(Post $post): void
    {
        $data = $this->hydrator->extract($post, ['id', 'date', 'title'])

        $this->db->insert('posts', [
            'id' => $data['id'],
            'create_date' => $data['date']->format('Y-m-d'),
            'title' => $data['title'],
        );
    }
}
```

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

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

Unknown

Total

1

Last Release

1315d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/5dc2928c1de5fa4c0411e437b457e7b8a32c12554ac5c69693a3fa6e0c6c346d?d=identicon)[andrey.radionoff](/maintainers/andrey.radionoff)

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/radionovel-php-hydrator/health.svg)

```
[![Health](https://phpackages.com/badges/radionovel-php-hydrator/health.svg)](https://phpackages.com/packages/radionovel-php-hydrator)
```

PHPackages © 2026

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