1. Go to this page and download the library: Download cuyz/valinor-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use CuyZ\Valinor\Mapper\TreeMapper;
final class SomeAutowiredService
{
public function __construct(
private TreeMapper $mapper,
) {}
public function someMethod(): void
{
$this->mapper->map(SomeDto::class, /* … */);
// …
}
}
// config/services.php
use CuyZ\Valinor\Mapper\TreeMapper;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (ContainerConfigurator $container): void {
$container
->services()
->set(\Acme\SomeService::class)
->args([
service(TreeMapper::class),
]);
};
use CuyZ\Valinor\Mapper\MapperBuilder;
final class SomeAutowiredService
{
public function __construct(
private MapperBuilder $mapperBuilder,
) {}
public function someMethod(): void
{
$this->mapperBuilder
// …
// Some mapper configuration
// …
->mapper()
->map(SomeDto::class, /* … */);
// …
}
}
// config/packages/valinor.php
return static function (Symfony\Config\ValinorConfig $config): void {
// Date formats that will be supported by the mapper by default.
$config->mapper()->dateFormatsSupported(['Y-m-d', 'Y-m-d H:i:s']);
// For security reasons, exceptions thrown in a constructor will not be
// caught by the mapper unless they are specifically allowed by giving their
// class names to the configuration below.
$config->mapper()->allowedExceptions([
\Webmozart\Assert\InvalidArgumentException::class,
\App\CustomException::class,
]);
// When a mapping error occurs during a console command, the output will
// automatically be enhanced to show information about errors. The maximum
// number of errors that will be displayed can be configured below, or set
// to 0 to disable this feature entirely.
$config->console()->mappingErrorsToOutput(15);
// By default, mapper cache entries are stored in the filesystem. This can
// be changed by setting the name of a PSR-16 cache service below.
$config->cache()->service('app.custom_cache');
// Cache entries representing class definitions won't be cleared when files
// are modified during development of the application. This can be changed
// by setting in which environments cache entries will be unvalidated.
$config->cache()->envWhereFilesAreWatched(['dev', 'custom_env']);
};
use CuyZ\Valinor\MapperBuilder;
use CuyZ\ValinorBundle\Configurator\MapperBuilderConfigurator
final class ConstructorRegistrationConfigurator implements MapperBuilderConfigurator
{
public function configure(MapperBuilder $builder): MapperBuilder
{
return $builder
->registerConstructor(SomeDTO::create(...))
->registerConstructor(SomeOtherDTO::new(...));
}
}
use CuyZ\Valinor\Mapper\TreeMapper;
use CuyZ\ValinorBundle\Configurator\Attributes\AllowPermissiveTypes;
use CuyZ\ValinorBundle\Configurator\Attributes\AllowSuperfluousKeys;
use CuyZ\ValinorBundle\Configurator\Attributes\EnableFlexibleCasting;
use CuyZ\ValinorBundle\Configurator\Attributes\SupportDateFormats;
final class SomeService
{
public function __construct(
#[EnableFlexibleCasting]
private TreeMapper $mapperWithFlexibleCasting,
// or…
#[AllowSuperfluousKeys]
private TreeMapper $mapperWithSuperfluousKeys,
// or…
#[AllowPermissiveTypes]
private TreeMapper $mapperWithPermissiveTypes,
// or…
#[SupportDateFormats('Y-m-d', 'Y/m/d')]
private TreeMapper $mapperWithCustomDateFormat,
// or a combination of the above…
#[EnableFlexibleCasting, AllowSuperfluousKeys, …]
private TreeMapper $mapperWithSeveralAttributes,
) {}
}
use Attribute;
use CuyZ\Valinor\MapperBuilder;
use CuyZ\ValinorBundle\Configurator\Attributes\MapperBuilderConfiguratorAttribute;
#[Attribute(Attribute::TARGET_PARAMETER)]
final class SomeCustomConfigurator implements MapperBuilderConfiguratorAttribute
{
public function configure(MapperBuilder $builder): MapperBuilder
{
return $builder
->enableFlexibleCasting()
->allowSuperfluousKeys()
->supportDateFormats('Y/m/d');
}
}
use CuyZ\Valinor\Mapper\TreeMapper;
use CuyZ\ValinorBundle\Configurator\Attributes\SomeCustomConfigurator;
final class SomeService
{
public function __construct(
#[SomeCustomConfigurator]
private TreeMapper $mapperWithCustomConfig
) {}
}
#[\CuyZ\ValinorBundle\Cache\WarmupForMapper]
final readonly class ClassThatWillBeWarmedUp
{
public function __construct(
public string $foo,
public int $bar,
) {}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.