PHPackages                             elipettingale/transformation - 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. elipettingale/transformation

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

elipettingale/transformation
============================

A package to easily transform data by creating transformer classes.

v1.1.3(5y ago)14061MITPHP

Since Feb 16Pushed 5y ago1 watchersCompare

[ Source](https://github.com/elipettingale/transformation)[ Packagist](https://packagist.org/packages/elipettingale/transformation)[ RSS](/packages/elipettingale-transformation/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (1)Versions (9)Used By (1)

Transformation
==============

[](#transformation)

A package to easily transform data using transformer classes. The idea behind this package is to be able to take data in one format and return it in a different or stripped down format. For example, you might use this when you are making an api endpoint and don't want to return everything or want to return something in multiple formats.

This is the generic version of this package. There is also a wordpress specific version here:

How to Install
--------------

[](#how-to-install)

Just install the package using composer:

```
composer require elipettingale/transformation

```

How to Use
----------

[](#how-to-use)

First start by creating a transformer class:

```
class UserTransfomer extends Transformer
{

}

```

Then use the Transform class to transform some data:

```
$users = [
    [
        'first_name' => 'Dave',
        'last_name' => 'Test',
        'email' => 'dave@test.com'
    ],
    [
        'first_name' => 'Gina',
        'last_name' => 'Test',
        'email' => 'gina@test.com'
    ]
];

$users = Transform::all($users, UserTransfomer::class);

```

Based on the configuration defined in your transformer class the data will be manipulated and returned

Building a Transformer Class
----------------------------

[](#building-a-transformer-class)

There are a few tools that you can use to transform your data, these can be defined in your transformer classes.

### Includes or Excludes

[](#includes-or-excludes)

These are properties you can define to determine which attributes are returned.

Defining includes will mean that only attributes that you define will be returned, for example the following transformer:

```
class UserTransfomer extends Transformer
{
    protected $includes = [
        'first_name'
    ];
}

```

would mean that using our earlier example we now have the following in $users:

```
[
    [
        'first_name' => 'Dave'
    ],
    [
        'first_name' => 'Gina'
    ]
]

```

Defining excludes will mean that all attributes will be returned except for those that you define, for example the following transformer:

```
class UserTransfomer extends Transformer
{
    protected $excludes = [
        'first_name'
    ];
}

```

would now transform our $users to:

```
[
    [
        'last_name' => 'Test',
        'email' => 'dave@test.com'
    ],
    [
        'last_name' => 'Test',
        'email' => 'gina@test.com'
    ]
]

```

If you define neither then all attributes will be returned.

### Renames

[](#renames)

Don't like the name of an attribute? You can use renames to change the key of attributes:

```
class UserTransfomer extends Transformer
{
    protected $includes = [
        'first_name'
    ];

    protected $rename = [
        'first_name' => 'name'
    ];
}

```

will now return:

```
[
    [
        'name' => 'Dave'
    ],
    [
        'name' => 'Gina'
    ]
]

```

### Mutators

[](#mutators)

If you've ever worked with Eloquent you should recognise this. A mutator is a method you define that will alter an attribute in some why before returning the data. It can also be used to define new computed attributes.

For example, take the following transformer:

```
class UserTransfomer extends Transformer
{
    public function getFullNameAttribute()
    {
        return $this->item['first_name'] . ' ' . $this->item['last_name'];
    }
}

```

This will create a new attribute called full\_name and will use your function to calculate it's value.

Now when running our users through this transformer we get:

```
[
    'first_name' => 'Dave',
    'last_name' => 'Test',
    'email' => 'dave@test.com',
    'full_name' => 'Dave Test
],
[
    'first_name' => 'Gina',
    'last_name' => 'Test',
    'email' => 'gina@test.com',
    'full_name' => 'Gina Test
]

```

Note that these new attributes will still obey the defined includes, excludes and renames.

###  Health Score

29

—

LowBetter than 57% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity62

Established project with proven stability

 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

Every ~69 days

Recently: every ~103 days

Total

7

Last Release

1911d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/9060130?v=4)[Elliot Pettingale](/maintainers/elipettingale)[@elipettingale](https://github.com/elipettingale)

---

Top Contributors

[![elipettingale](https://avatars.githubusercontent.com/u/9060130?v=4)](https://github.com/elipettingale "elipettingale (12 commits)")

### Embed Badge

![Health badge](/badges/elipettingale-transformation/health.svg)

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

###  Alternatives

[paragonie/paserk

PHP implementation of PASERK (Platform Agnostic SERialized Keys), a PASETO extension.

17235.4k1](/packages/paragonie-paserk)[antonforwork/ivideon-php

IVideon

132.6k](/packages/antonforwork-ivideon-php)

PHPackages © 2026

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