vendor/json-mapper/json-mapper/src/JsonMapperFactory.php line 17

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace JsonMapper;
  4. use JsonMapper\Handler\PropertyMapper;
  5. use JsonMapper\Middleware\MiddlewareInterface;
  6. class JsonMapperFactory
  7. {
  8.     /** @var JsonMapperBuilder */
  9.     private $builder;
  10.     public function __construct(JsonMapperBuilder $builder null)
  11.     {
  12.         $this->builder $builder ?? JsonMapperBuilder::new();
  13.     }
  14.     public function create(PropertyMapper $propertyMapper nullMiddlewareInterface ...$handlers): JsonMapperInterface
  15.     {
  16.         $builder = clone ($this->builder);
  17.         $builder->withPropertyMapper($propertyMapper ?? new PropertyMapper());
  18.         foreach ($handlers as $handler) {
  19.             $builder->withMiddleware($handler);
  20.         }
  21.         return $builder->build();
  22.     }
  23.     public function default(): JsonMapperInterface
  24.     {
  25.         $builder = clone ($this->builder);
  26.         return $builder->withDocBlockAnnotationsMiddleware()
  27.             ->withNamespaceResolverMiddleware()
  28.             ->build();
  29.     }
  30.     public function bestFit(): JsonMapperInterface
  31.     {
  32.         if (PHP_VERSION_ID <= 70400) {
  33.             return $this->default();
  34.         }
  35.         $builder = clone ($this->builder);
  36.         return $builder->withDocBlockAnnotationsMiddleware()
  37.             ->withTypedPropertiesMiddleware()
  38.             ->withNamespaceResolverMiddleware()
  39.             ->build();
  40.     }
  41. }