PHPackages                             dashifen/transformer - 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. dashifen/transformer

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

dashifen/transformer
====================

An interface and abstract class useful for the production of objects which transform data.

2.2.0(6y ago)05.2k[1 issues](https://github.com/dashifen/transformer/issues)[1 PRs](https://github.com/dashifen/transformer/pulls)1MITPHPPHP &gt;=7.3

Since Sep 14Pushed 4y ago1 watchersCompare

[ Source](https://github.com/dashifen/transformer)[ Packagist](https://packagist.org/packages/dashifen/transformer)[ RSS](/packages/dashifen-transformer/feed)WikiDiscussions main Synced 3d ago

READMEChangelogDependencies (1)Versions (15)Used By (1)

Transformers
============

[](#transformers)

Here we define an interface for Transformers as well as an Abstract class from which concrete objects that transform data based on field names can be built. The goal: to standardize the way that Dash creates transformers in their work.

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

[](#installation)

`composer require dashifen/transformer`

Usage
-----

[](#usage)

You can either extend the `AbstractTransformer` object or simply implement the `TransformerInterface` on your own. The interface defines two methods:

1. `canTransform` - returns a Boolean value to tell the calling scope if data can be transformed based on a `$field` parameter.
2. `transform` - returns a transformed `$value` based on a `$field` parameter.

The `AbstractTransformer` implements both of these for you while requiring that you define a third method: a protected `getTransformationMethod` method. It returns the name of another method that is assumed to be of the same object that can transform data labeled by `$field`.

Example
-------

[](#example)

In this example, we're assuming that the naming convention for the application's fields is to use kebab-case.

```
class Transformer extends AbstractTransformer {
    protected function getTransformationMethod(string $field): string {

        // to convert a kebab-case $field to a function name, we want to
        // convert it to StudlyCaps.  so, first, we convert from kebab-case to
        // camelCase and then we ucfirst() the camelCase string to make it
        // studly.  finally, we add the word "transform."  Thus, a start-date
        // field becomes startDate, then StartDate, and finally we return
        // transformStartDate.

        $camelCase = preg_replace_callback("/-([a-z])/", function (array $matches): string {
            return strtoupper($matches[1]);
        }, $field);

        return "transform" . ucfirst($camelCase);
    }

    private function transformStartDate(string $date): string {

        // we assume that $date has already been validated, so here we just
        // want to make sure it's in YYYY-MM-DD format.  strtotime() can help
        // with that!

        return date("Y-m-d", strtotime($date));
    }
}
```

The above little class represents a simple, concrete object based on the functionality of the `AbstractTransformer` found within this repo. The abstract object's implementation of the `canTransform` and `transform` methods of our interface make sure that we use the `getTransformationMethod` to identify the name of a method that can transform data labeled by `$field` and then will call that method when we need it returning its result.

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 55.6% 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 ~25 days

Total

13

Last Release

2255d ago

Major Versions

1.2.2 → 2.0.02019-11-13

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/8269?v=4)[David Dashifen Kees](/maintainers/dashifen)[@dashifen](https://github.com/dashifen)

---

Top Contributors

[![dashifen-gu](https://avatars.githubusercontent.com/u/50078554?v=4)](https://github.com/dashifen-gu "dashifen-gu (10 commits)")[![dashifen](https://avatars.githubusercontent.com/u/8269?v=4)](https://github.com/dashifen "dashifen (8 commits)")

### Embed Badge

![Health badge](/badges/dashifen-transformer/health.svg)

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

###  Alternatives

[supercool/tablemaker

Create customizable and user-defined table fields.

40141.7k](/packages/supercool-tablemaker)

PHPackages © 2026

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