Download the PHP package cuyz/valinor-bundle without Composer
On this page you can find all versions of the php package cuyz/valinor-bundle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download cuyz/valinor-bundle
More information about cuyz/valinor-bundle
Files in cuyz/valinor-bundle
Package valinor-bundle
Short Description Symfony integration of `cuyz/valinor` — a library that helps to map any input into a strongly-typed value object structure.
License MIT
Homepage https://github.com/CuyZ/Valinor-Bundle
Informations about the package valinor-bundle
[![Latest Stable Version](https://poser.pugx.org/cuyz/valinor-bundle/v)][link-packagist] [![PHP Version Require](https://poser.pugx.org/cuyz/valinor-bundle/require/php)][link-packagist]
Symfony integration of Valinor library.
Valinor takes care of the construction and validation of raw inputs (JSON, plain arrays, etc.) into objects, ensuring a perfectly valid state. It allows the objects to be used without having to worry about their integrity during the whole application lifecycle.
The validation system will detect any incorrect value and help the developers by providing precise and human-readable error messages.
The mapper can handle native PHP types as well as other advanced types supported by PHPStan and Psalm like shaped arrays, generics, integer range and more.
Installation
Mapper injection
A mapper instance can be injected in any autowired service in parameters with
the type TreeMapper
.
It can also be manually injected in a service…
…using a PHP file
…using a YAML file
For more granular control, a MapperBuilder
instance can be injected instead.
`
Bundle configuration
Global configuration for the bundle can be done in a package configuration file…
…using a PHP file
…using a YAML file
Other features
Customizing mapper builder
A service can customize the mapper builder by implementing the interface
MapperBuilderConfigurator
.
[!NOTE] If this service is autoconfigured, it will automatically be used, otherwise it needs to be tagged with the tag
valinor.mapper_builder_configurator
.
Configuring mapper behaviour with attributes
Attributes can be used to automatically customize the mapper behaviour.
[!WARNING] This feature is only available for autowired services.
-
EnableFlexibleCasting
— changes several behaviours of the mapper concerning type flexibility. For more information, read the documentation. -
AllowSuperfluousKeys
— allows superfluous keys in source arrays, preventing errors when a value is not bound to any object property/parameter or shaped array element. For more information, read the documentation. -
AllowPermissiveTypes
— allows permissive typesmixed
andobject
to be used during mapping. SupportDateFormats
— configures which date formats will be supported by the mapper.
It is also possible to declare custom configurator attributes by using the
interface MapperBuilderConfiguratorAttribute
:
And then it can be used in a service:
Mapping errors in console commands
When running a command using Symfony Console, mapping errors will be caught to enhance the output and give a better idea of what went wrong.
[!NOTE] The maximum number of errors that will be displayed can be configured in the bundle configuration.
Example of output:
Cache warmup
When using Symfony's cache warmup feature — usually bin/console cache:warmup
—
the mapper cache will be warmed up automatically for all classes that are tagged
with the tag valinor.warmup
.
This tag can be added manually via service configuration, or automatically for
autoconfigured classes using the attribute WarmupForMapper
.
[!NOTE] The
WarmupForMapper
attribute disables dependency injection autowiring for the class it is assigned to. Although autowiring a class that will be instantiated by a mapper makes little sense in most cases, it may still be needed, in which case the$autowire
parameter of the attribute can be set totrue
.
All versions of valinor-bundle with dependencies
cuyz/valinor Version ^1.0
symfony/config Version ^5.4 || ^6.4 || ^7.0
symfony/dependency-injection Version ^5.4 || ^6.4 || ^7.0
symfony/http-kernel Version ^5.4 || ^6.4 || ^7.0