PHPackages                             bowlofsoup/normalizer-bundle - 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. [Database &amp; ORM](/categories/database)
4. /
5. bowlofsoup/normalizer-bundle

ActiveSymfony-bundle[Database &amp; ORM](/categories/database)

bowlofsoup/normalizer-bundle
============================

Normalizer for objects.

v6.0.0(2mo ago)1136.8k↓69.5%3[11 issues](https://github.com/BowlOfSoup/NormalizerBundle/issues)[2 PRs](https://github.com/BowlOfSoup/NormalizerBundle/pulls)MITPHPPHP &gt;=8.4CI failing

Since Sep 9Pushed 2mo ago3 watchersCompare

[ Source](https://github.com/BowlOfSoup/NormalizerBundle)[ Packagist](https://packagist.org/packages/bowlofsoup/normalizer-bundle)[ RSS](/packages/bowlofsoup-normalizer-bundle/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (22)Versions (35)Used By (0)

Bowl Of Soup Normalizer
=======================

[](#bowl-of-soup-normalizer)

[![Build Status](https://github.com/BowlOfSoup/NormalizerBundle/actions/workflows/ci.yaml/badge.svg?branch=master)](https://github.com/BowlOfSoup/NormalizerBundle/actions/workflows/ci.yaml)[![codecov](https://camo.githubusercontent.com/efa76abf24b2d0ec3859b33ea0122b1ff29c2620f74e48dbeeb7dd35629f0110/68747470733a2f2f636f6465636f762e696f2f67682f426f776c4f66536f75702f4e6f726d616c697a657242756e646c652f6272616e63682f6d61737465722f67726170682f62616467652e7376673f746f6b656e3d324f57344557764d5544)](https://codecov.io/gh/BowlOfSoup/NormalizerBundle)[![PHP Version](https://camo.githubusercontent.com/be185a35c944e08e518fe9ae5c5d7ea7a2f1c1b4796e1b72afe8d2b8c16e3b96/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f253345253344382e342d626c75652e737667)](https://www.php.net/)[![Symfony Version](https://camo.githubusercontent.com/f7ca77ff99f125dd21c133f4dd4ee8fe1f5abcc43e3e6640b5158e7f33dc0c2a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73796d666f6e792d352e342e782d626c75652e737667)](https://symfony.com/)[![Symfony Version](https://camo.githubusercontent.com/2a5237d46cbc2e64387bbe5873c4d4043f330a50dbc8a990fce19cee588e7332/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73796d666f6e792d362e342e782d626c75652e737667)](https://symfony.com/)[![Symfony Version](https://camo.githubusercontent.com/8ec8751b539456f50824f5fda670855711d5f40ed0d7b84149ce95145ca7af01/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73796d666f6e792d372e342e782d626c75652e737667)](https://symfony.com/)

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

[](#installation)

```
composer require bowlofsoup/normalizer-bundle

```

Add the bundle to your `config/bundles.php` file

```
BowlOfSoup\NormalizerBundle\BowlOfSoupNormalizerBundle::class => ['all' => true],

```

Quick feature overview
----------------------

[](#quick-feature-overview)

- It's a Symfony bundle!
- Normalizes class properties and methods (public, protected, private)
- Can Serialize normalized content
- Works with Symfony and Doctrine as its ORM. Can handle Doctrine proxies
- Circular reference check: Handles circular reference by detecting it and returning content of the objects getId() method
- Object caching: If a getId() method is implemented for an object, it will cache the normalized object per normalize command
- Annotation caching, this means speed!
    - The annotations for an object are cached. This means not parsing annotations multiple times for the same object. per flow (per normalize command)
    - In Symfony prod mode, annotations are cached completely (after the first run)
- Symfony translations
    - Indicate domain (translation filename) and locale in annotations
    - Does not support formatting with ICU MessageFormat (yet), so no parameters

The main features are described in the [documentation](https://github.com/BowlOfSoup/NormalizerBundle/wiki).

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

[](#documentation)

Documentation on the usage and all supported options can be found [in the wiki](https://github.com/BowlOfSoup/NormalizerBundle/wiki).

1. [What is serialization and normalization?](https://github.com/BowlOfSoup/NormalizerBundle/wiki/What-is-serialization-and-normalization%3F)
2. [Installation](https://github.com/BowlOfSoup/NormalizerBundle/wiki/Installation)
3. [Serializing](https://github.com/BowlOfSoup/NormalizerBundle/wiki/Serializing)
    1. [Serialize annotations](https://github.com/BowlOfSoup/NormalizerBundle/wiki/Serialize-annotations)
4. [Normalizing](https://github.com/BowlOfSoup/NormalizerBundle/wiki/Normalizing)
    1. [Normalize annotations](https://github.com/BowlOfSoup/NormalizerBundle/wiki/Normalize-annotations)
5. [Translate a value](https://github.com/BowlOfSoup/NormalizerBundle/wiki/Translate-a-value)
    1. [Translate annotations](https://github.com/BowlOfSoup/NormalizerBundle/wiki/Translate-annotations)

Why use this normalizer and not ...
-----------------------------------

[](#why-use-this-normalizer-and-not-)

- The Bowl Of Soup Normalizer uses an opt-in mechanism by default. You have to indicate which properties must be normalized
- You can indicate a context group, how is the value to be normalized, in which context?
- It's designed with speed in mind. Not packed with features for which you don't use half of it
- It has proven itself in a complex application with 15.000+ daily end users

Development
-----------

[](#development)

The following CI tools can be used to check for code quality before pushing code:

### Rector

[](#rector)

Rector can be used to automate code upgrades and refactoring. Try a dry-run first!

```
vendor/bin/rector process --dry-run --no-progress-bar --ansi
```

### PHPStan

[](#phpstan)

PHPStan is a static code analysis tool that focuses on finding errors in the code. Fixing the outcome of PHPStan prevents possible bugs and errors.

```
vendor/bin/phpstan
```

### PHPUnit

[](#phpunit)

Speaks for itself, code should be tested. Run with coverage (output = tests/coverage):

```
XDEBUG_MODE=coverage php -dzend_extension=xdebug.so vendor/bin/phpunit
```

Or without coverage:

```
vendor/bin/phpunit
```

**Code coverage** `master`:

[![](https://camo.githubusercontent.com/02c1b41b7d13229398dcb0efcf8fd45a7f30a5a2094dcebcfa62ba529881d4b3/68747470733a2f2f636f6465636f762e696f2f67682f426f776c4f66536f75702f4e6f726d616c697a657242756e646c652f6272616e63682f6d61737465722f6772617068732f73756e62757273742e7376673f746f6b656e3d324f57344557764d5544)](https://camo.githubusercontent.com/02c1b41b7d13229398dcb0efcf8fd45a7f30a5a2094dcebcfa62ba529881d4b3/68747470733a2f2f636f6465636f762e696f2f67682f426f776c4f66536f75702f4e6f726d616c697a657242756e646c652f6272616e63682f6d61737465722f6772617068732f73756e62757273742e7376673f746f6b656e3d324f57344557764d5544)

### Code style fixer

[](#code-style-fixer)

Have php-cs-fixer automatically fix styling.

```
vendor/bin/php-cs-fixer fix
```

###  Health Score

56

—

FairBetter than 97% of packages

Maintenance63

Regular maintenance activity

Popularity35

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity92

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 92.5% 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 ~125 days

Recently: every ~221 days

Total

29

Last Release

85d ago

Major Versions

1.1.x-dev → 2.02020-04-28

2.1.x-dev → 3.0.02020-09-16

3.0.2 → v4.42023-11-06

4.4.x-dev → v5.42023-11-07

v5.4.2 → v6.0.02026-04-10

PHP version history (3 changes)1.0.0PHP &gt;=5.3

2.0PHP &gt;=7.2

v6.0.0PHP &gt;=8.4

### Community

Maintainers

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

---

Top Contributors

[![BowlOfSoup](https://avatars.githubusercontent.com/u/19224810?v=4)](https://github.com/BowlOfSoup "BowlOfSoup (124 commits)")[![raymondschouten](https://avatars.githubusercontent.com/u/21282689?v=4)](https://github.com/raymondschouten "raymondschouten (7 commits)")[![wcoppens](https://avatars.githubusercontent.com/u/181460?v=4)](https://github.com/wcoppens "wcoppens (2 commits)")[![gabriel-255](https://avatars.githubusercontent.com/u/19374371?v=4)](https://github.com/gabriel-255 "gabriel-255 (1 commits)")

---

Tags

annotationsapiarraydoctrinedoctrine-ormnormalizationnormalizerserializationserializersymfonysymfony-bundletranslationnormalizerarrayobjectrepresentation

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Rector

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/bowlofsoup-normalizer-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/bowlofsoup-normalizer-bundle/health.svg)](https://phpackages.com/packages/bowlofsoup-normalizer-bundle)
```

###  Alternatives

[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.9M387](/packages/easycorp-easyadmin-bundle)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9421.6k61](/packages/open-dxp-opendxp)[oro/platform

Business Application Platform (BAP)

645143.5k115](/packages/oro-platform)[pimcore/pimcore

Content &amp; Product Management Framework (CMS/PIM/E-Commerce)

3.8k3.8M508](/packages/pimcore-pimcore)[chameleon-system/chameleon-base

The Chameleon System core.

1028.6k5](/packages/chameleon-system-chameleon-base)[shopware/platform

The Shopware e-commerce core

3.4k1.5M3](/packages/shopware-platform)

PHPackages © 2026

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