PHPackages                             demvsystems/mapper - 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. demvsystems/mapper

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

demvsystems/mapper
==================

mapper

v2.0.1(4y ago)019.0k↑50%[1 PRs](https://github.com/demvsystems/mapper/pulls)MITPHPPHP ^7.1 || ^8.0CI failing

Since Feb 12Pushed 11mo ago6 watchersCompare

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

READMEChangelog (4)Dependencies (2)Versions (6)Used By (0)

Mapper
======

[](#mapper)

Der Mapper ist dazu da, flexibel verschiedene Array-Formate in und vom Aggregations-Array-Format umzuwandeln. Durch die Umwandlung **in** das vorliegende Aggregations-Array-Format kann anschließend das Resultat direkt per Array-*Import* als Kunde importiert werden. Nach einem Export kann mithilfe des Mappers das resultierende Format in ein vorheriges, nicht notwendigerweise konformes Format geändert werden. Die Funktionsweise ist sehr einfach &amp; flexibel. Ein Beispiel:

```
$mapper = new Mapper();
$mapper->map('Daten.Vor-Name', function(MapperInterface $mapper, $value) {
    $mapper->setAttribute('grunddaten.vorname', $value);
});
$mapper->map('Finanzen.Netto.Betrag', function(MapperInterface $mapper, $value) {
    $mapper->setAttribute('finanzen.netto', (int) $value > 0 ? $value : 0);
});
$result = $mapper->applyMapping(
    [
        'Daten' => [
            'Vor-Name' => 'Müller'
        ],
        'Finanzen' => [
            'Netto' => [
                'Betrag' => 1500
            ]
        ]
    ]
);
```

Mit der Methode `map` wird angegeben, dass wir den Key `Vor-Name` der im Unter-Array `Daten` steckt - also sich hier befindet: `['Daten']['Vor-Name']`) - in den Key `vorname` des Unterarray `grunddaten` des resultierenden Arrays schreiben möchten. Die Dot-Notation gibt dabei beliebig geschachtelte Array-Strukturen an. `$result` wäre daher

```
[
	'grunddaten' => [
		'vorname' => 'Müller'
	],
	'finanzen' => [
		'netto' => 1500
	]
]

```

Mit dem optionalen Callback können Die Werte vor dem schreiben verifiziert bzw. modifiziert werden.

Die nun vorliegende Struktur lässt sich auch wieder in die Ursprungs-Struktur zurück transformieren:

```
$mapper = new Mapper();
$mapper->map('grunddaten.vorname', function(MapperInterface $mapper, $value) {
    $mapper->setAttribute('Daten.Vor-Name', $value);
});
$mapper->map('finanzen.netto', function(MapperInterface $mapper, $value) {
    $mapper->setAttribute('Finanzen.Netto.Betrag', $value);
});
$source = $mapper->applyMapping($result);
```

`$source` würde also wieder aussehen, wie die Eingangs-Struktur:

```
[
    'Daten' => [
        'Vor-Name' => 'Müller'
    ],
    'Finanzen' => [
        'Netto' => [
            'Betrag' => 1500
        ]
    ]
]

```

Da es in der Aggregation bereits fest definierte Strukturen gibt, existiert neben dem Mapper auch ein `KundenMapper` und ein `MaklerMapper`, der die entsprechenden Funktionalitäten, wie das grunddaten Mapping, bereits als Methode anbieten, in der man Ziel und Quelle in der Dot-Notation angibt:

```
$mapper->grunddaten('vorname', 'Daten.Vor-Name');
```

Das Resultat von `applyMapping` wäre bei der Eingangs erwähnten Struktur wie folgt:

```
[
	'grunddaten' => [
		'vorname' => 'Müller'
	]
]

```

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance38

Infrequent updates — may be unmaintained

Popularity25

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity72

Established project with proven stability

 Bus Factor1

Top contributor holds 81.3% 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 ~419 days

Total

4

Last Release

1758d ago

Major Versions

v1.1.0 → v2.0.02019-04-05

PHP version history (2 changes)v1.0.0PHP ^7.1

v2.0.1PHP ^7.1 || ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/771d66ca80a4f8717264505edfcfce796adfc4775094326a391b500cf01cdfa4?d=identicon)[demvsystems](/maintainers/demvsystems)

---

Top Contributors

[![Dgame](https://avatars.githubusercontent.com/u/2406877?v=4)](https://github.com/Dgame "Dgame (13 commits)")[![Kalipso0505](https://avatars.githubusercontent.com/u/3777168?v=4)](https://github.com/Kalipso0505 "Kalipso0505 (2 commits)")[![alexmpunkt](https://avatars.githubusercontent.com/u/7370582?v=4)](https://github.com/alexmpunkt "alexmpunkt (1 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/demvsystems-mapper/health.svg)

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

###  Alternatives

[stefanbauer/laravel-favicon-extractor

A favicon extractor for Laravel

10125.3k](/packages/stefanbauer-laravel-favicon-extractor)

PHPackages © 2026

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