Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Normalizer Bundle Laravel Package

bowlofsoup/normalizer-bundle

View on GitHub
Deep Wiki
Context7

Bowl Of Soup Normalizer

Build Status codecov PHP Version Symfony Version Symfony Version Symfony Version

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 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.

Documentation

Documentation on the usage and all supported options can be found in the wiki.

  1. What is serialization and normalization?
  2. Installation
  3. Serializing
    1. Serialize annotations
  4. Normalizing
    1. Normalize annotations
  5. Translate a value
    1. Translate annotations

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 automate 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
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor