PHPackages                             jardisport/data - 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. jardisport/data

ActiveLibrary

jardisport/data
===============

Port interfaces for entity hydration, field mapping and identity generation

v1.0.0(3d ago)06↓100%proprietaryPHPPHP &gt;=8.2CI passing

Since Mar 22Pushed 3d agoCompare

[ Source](https://github.com/jardisPort/data)[ Packagist](https://packagist.org/packages/jardisport/data)[ Docs](https://github.com/jardisPort/data)[ RSS](/packages/jardisport-data/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (2)Versions (3)Used By (0)

Jardis Data Port
================

[](#jardis-data-port)

[![Build Status](https://github.com/jardisPort/data/actions/workflows/ci.yml/badge.svg)](https://github.com/jardisPort/data/actions/workflows/ci.yml/badge.svg)[![License: PolyForm Shield](https://camo.githubusercontent.com/d8fb46c82be4c5312bf3e372ac734dfdf6a8b328e9c2b2856af671adbb0600a5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d506f6c79466f726d253230536869656c642d626c75652e737667)](LICENSE.md)[![PHP Version](https://camo.githubusercontent.com/a68b290dcc313d698dc138a1111aa83eee2f143605449d7e8b5416ea6f88558f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d253345253344382e322d3737374242342e737667)](https://www.php.net/)[![PHPStan Level](https://camo.githubusercontent.com/c51bda247654363d3e30bc352674dd761a9557803a14af0226eb411d6dc0006b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048505374616e2d4c6576656c253230382d627269676874677265656e2e737667)](phpstan.neon)[![PSR-12](https://camo.githubusercontent.com/34b10db0caa29bacd49bda5c437a8de95385f036f3230b31fa605326e18da22c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436f64652532305374796c652d5053522d2d31322d626c75652e737667)](phpcs.xml)

> Part of the **[Jardis Business Platform](https://jardis.io)** — Enterprise-grade PHP components for Domain-Driven Design

Port interfaces for entity hydration, field mapping and identity generation. Defines contracts for hydrating entities from database rows, tracking changes via snapshots, mapping field names between domain and database, and generating unique identities (UUID v4/v5/v7, NanoID).

---

Interfaces
----------

[](#interfaces)

### **HydrationInterface**

[](#hydrationinterface)

`JardisPort\Data\HydrationInterface`

Entity hydration, change tracking and snapshot management.

MethodSignatureDescription`hydrate``hydrate(object $entity, array $data): object`Hydrate entity from database row, update snapshot`apply``apply(object $entity, array $data): object`Apply data without updating snapshot`hydrateAggregate``hydrateAggregate(object $aggregate, array $data): object`Recursive hydration of nested objects`getChanges``getChanges(object $entity): array`Detect modifications against snapshot`getSnapshot``getSnapshot(object $entity): array`Get original values snapshot`getChangedFields``getChangedFields(object $entity): array`Get changed column names only`clone``clone(object $entity): object`Flat clone (DB-column properties only)`cloneAggregate``cloneAggregate(object $entity): object`Deep clone (full object graph)`diff``diff(object $entity1, object $entity2): array`Compare two entities`toArray``toArray(object $entity): array`Convert entity to flat array`aggregateToArray``aggregateToArray(object $entity): array`Convert aggregate to nested array`loadMultiple``loadMultiple(object $template, array $rows): array`Batch hydrate from rows### **IdentityInterface**

[](#identityinterface)

`JardisPort\Data\IdentityInterface`

Identity generation for entities and aggregates.

MethodSignatureDescription`generateUuid4``generateUuid4(): string`Random UUID v4`generateUuid5``generateUuid5(string $namespace, string $name): string`Deterministic UUID v5 (name-based)`generateUuid7``generateUuid7(): string`Time-ordered UUID v7`generateNanoId``generateNanoId(int $length = 21, string $alphabet = '...'): string`Compact, URL-safe random ID### **FieldMapperInterface**

[](#fieldmapperinterface)

`JardisPort\Data\FieldMapperInterface`

Bidirectional array-key mapping between domain field names and database column names.

MethodSignatureDescription`toColumns``toColumns(array $data, array $map): array`Rename keys from domain to column names`fromColumns``fromColumns(array $data, array $map): array`Rename keys from column to domain names (recursive)---

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

[](#installation)

```
composer require jardisport/data
```

Implemented by
--------------

[](#implemented-by)

- **[jardissupport/data](https://github.com/jardisSupport/data)** — Reflection-based implementation with value-based type detection, recursive aggregate hydration, and snapshot-based change tracking

Documentation
-------------

[](#documentation)

Full documentation, guides, and API reference:

**[jardis.io/docs/port/data](https://jardis.io/docs/port/data)**

License
-------

[](#license)

This package is licensed under the [PolyForm Shield License 1.0.0](LICENSE.md). Free for all use except building competing frameworks or developer tooling.

---

**[Jardis](https://jardis.io)** · [Documentation](https://jardis.io/docs) · [Headgent](https://headgent.com)

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance99

Actively maintained with recent releases

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

Unknown

Total

1

Last Release

3d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e07a1b668e9e01ee6d1b85de7b3be1c2513f68aae9494b2011d1592104d5daa0?d=identicon)[jardis](/maintainers/jardis)

---

Top Contributors

[![Headgent](https://avatars.githubusercontent.com/u/245725954?v=4)](https://github.com/Headgent "Headgent (1 commits)")

---

Tags

interfacesdatadddhydrationHeadgentJardisPort

###  Code Quality

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/jardisport-data/health.svg)

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

###  Alternatives

[symfony/event-dispatcher-contracts

Generic abstractions related to dispatching event

3.4k741.5M364](/packages/symfony-event-dispatcher-contracts)[symfony/service-contracts

Generic abstractions related to writing services

2.6k843.4M284](/packages/symfony-service-contracts)[fakerphp/faker

Faker is a PHP library that generates fake data for you.

3.9k349.3M3.0k](/packages/fakerphp-faker)[kassko/data-mapper

A mapper which gives a lot of features to representate some raw data like objects

1338.3k](/packages/kassko-data-mapper)

PHPackages © 2026

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