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

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

kariricode/transformer
======================

Composable, rule-based data transformation engine for PHP 8.4+ — 32 rules, #\[Transform\] attributes, case conversion, powered by kariricode/property-inspector. ARFA 1.3.

v2.0.0(2mo ago)03MITPHPPHP ^8.4CI passing

Since Oct 26Pushed 2mo agoCompare

[ Source](https://github.com/KaririCode-Framework/kariricode-transformer)[ Packagist](https://packagist.org/packages/kariricode/transformer)[ Docs](https://kariricode.org)[ RSS](/packages/kariricode-transformer/feed)WikiDiscussions main Synced 1mo ago

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

KaririCode Transformer
======================

[](#kariricode-transformer)

[![PHP 8.4+](https://camo.githubusercontent.com/270717987f5341772d79b57567226e54ed27b2d4199bbdc98a96e2edf24902fa/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e342532422d3737374242343f6c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://www.php.net/)[![License: MIT](https://camo.githubusercontent.com/1e64768fef09f35b66921728160f533208fd2e3e792a2755187d16c25d535511/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d3232633535652e737667)](LICENSE)[![PHPStan Level 9](https://camo.githubusercontent.com/a812723b363d3726b682e5d739e91f2ade163846054ce3797b9085b84cc61806/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048505374616e2d4c6576656c253230392d344634364535)](https://phpstan.org/)[![Rules](https://camo.githubusercontent.com/7d3357cb3f8295cf0e7e157770b1cca99655b8634cb2fe36f2fb812906c4af61/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52756c65732d33322d323263353565)](https://kariricode.org)[![Zero Dependencies](https://camo.githubusercontent.com/d96960614f3876c99d87adb499854fd9be9d384e813466e9fcf44a73456fc098/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446570656e64656e636965732d302d323263353565)](composer.json)[![ARFA](https://camo.githubusercontent.com/708efab30524ab8fd4e0413edfb4378bb863a71559c4a9b59cdcb7b0ab6f65c0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f415246412d312e332d6f72616e6765)](https://kariricode.org)[![KaririCode Framework](https://camo.githubusercontent.com/bd3e3709bf161ac982b76f7afd06c39afe478d15f2b5e1d47df8606b5c9c03f0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4b6172697269436f64652d4672616d65776f726b2d6f72616e6765)](https://kariricode.org)

**Composable, rule-based data transformation engine for PHP 8.4+ — 32 rules, zero dependencies.**

[Installation](#installation) · [Quick Start](#quick-start) · [Case Conversion](#case-conversion) · [All Rules](#all-32-rules) · [Architecture](#architecture)

---

The Problem
-----------

[](#the-problem)

Data presentation layer needs conversions that don't belong in business logic but are always awkwardly placed:

```
// Scattered everywhere, no composition, no audit trail
$name   = lcfirst(str_replace('_', '', ucwords($input, '_')));  // camelCase
$price  = 'R$ ' . number_format($price, 2, ',', '.');           // currency
$rank   = $rank . 'th';                                          // ordinal
$cpf    = preg_replace('/\D/', '', $cpf);                        // strip formatting

// No attribute DSL, no pipeline composition, no tracking
```

The Solution
------------

[](#the-solution)

```
use KaririCode\Transformer\Provider\TransformerServiceProvider;

$engine = (new TransformerServiceProvider())->createEngine();

$result = $engine->transform(
    data: [
        'name'  => 'walmir_silva',
        'price' => 1234.5,
        'rank'  => 3,
        'cpf'   => '529.982.247-25',
    ],
    fieldRules: [
        'name'  => ['pascal_case'],
        'price' => [['currency_format', ['prefix' => 'R$ ', 'dec_point' => ',', 'thousands' => '.']]],
        'rank'  => ['ordinal'],
        'cpf'   => ['cpf_to_digits'],
    ],
);

echo $result->get('name');  // "WalmirSilva"
echo $result->get('price'); // "R$ 1.234,50"
echo $result->get('rank');  // "3rd"
echo $result->get('cpf');   // "52998224725"
```

---

Requirements
------------

[](#requirements)

RequirementVersionPHP8.4 or higherkariricode/property-inspector^2.0---

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

[](#installation)

```
composer require kariricode/transformer
```

---

Quick Start
-----------

[](#quick-start)

```
