Code Coverage
 
Lines
Branches
Paths
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
14 / 14
100.00% covered (success)
100.00%
13 / 13
53.33% covered (warning)
53.33%
8 / 15
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
DefaultCoercers
100.00% covered (success)
100.00%
14 / 14
100.00% covered (success)
100.00%
13 / 13
53.33% covered (warning)
53.33%
8 / 15
100.00% covered (success)
100.00%
1 / 1
20.16
100.00% covered (success)
100.00%
1 / 1
 get
100.00% covered (success)
100.00%
14 / 14
100.00% covered (success)
100.00%
13 / 13
53.33% covered (warning)
53.33%
8 / 15
100.00% covered (success)
100.00%
1 / 1
20.16
1<?php
2
3declare(strict_types=1);
4
5namespace Celemas\Sire;
6
7use Override;
8
9final class DefaultCoercers implements Contract\CoercerRegistry
10{
11    /** @var array<string, Contract\Coercer> */
12    private array $loaded = [];
13
14    #[Override]
15    public function get(string $name): ?Contract\Coercer
16    {
17        if (array_key_exists($name, $this->loaded)) {
18            return $this->loaded[$name];
19        }
20
21        $coercer = match ($name) {
22            'string' => new Coercer\Str(),
23            'bool' => new Coercer\Boolean(),
24            'list' => new Coercer\ListArray(),
25            'float' => new Coercer\FloatingPoint(),
26            'int' => new Coercer\Integer(),
27            'number' => new Coercer\Number(),
28            default => null,
29        };
30
31        if ($coercer !== null) {
32            $this->loaded[$name] = $coercer;
33        }
34
35        return $coercer;
36    }
37}