bowlofsoup / normalizer-bundle
Normalizer for objects.
Installs: 27 965
Dependents: 0
Suggesters: 0
Security: 0
Stars: 10
Watchers: 3
Forks: 3
Open Issues: 13
Type:symfony-bundle
Requires
- php: >=7.2
- ext-dom: *
- ext-json: *
- ext-libxml: *
- ext-simplexml: *
- doctrine/annotations: ^1.13.0
- symfony/cache: ~5.4
- symfony/framework-bundle: ~5.4
- symfony/translation: ~5.4
Requires (Dev)
- doctrine/collections: 1.*
- doctrine/common: ~3.0
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan: ^1.10
- phpstan/phpstan-symfony: ^1.3
- phpunit/phpunit: ^8.0
- rector/rector: ^0.18.6
This package is auto-updated.
Last update: 2025-03-21 18:23:35 UTC
README
Installation
composer require bowlofsoup/normalizer-bundle
Add the bundle to your config/bundles.php
file
BowlOfSoup\NormalizerBundle\BowlOfSoupNormalizerBundle::class => ['all' => true],
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 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.
Documentation
Documentation on the usage and all supported options can be found in the wiki.
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
The following CI tools can be used to check for code quality before pushing code:
Rector
Rector can be used to automated code upgrades and refactoring. Try a dry-run first!
vendor/bin/rector process --dry-run --no-progress-bar --ansi
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
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
:
Code style fixer
Have php-cs-fixer automatically fix styling.
vendor/bin/php-cs-fixer fix