Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
91.67% covered (success)
91.67%
11 / 12
85.71% covered (warning)
85.71%
6 / 7
CRAP
0.00% covered (danger)
0.00%
0 / 1
ItemListMetadata
91.67% covered (success)
91.67%
11 / 12
85.71% covered (warning)
85.71%
6 / 7
8.04
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getDisplayName
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 toClass
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getHashmap
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getRequiredFields
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 toScalarType
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getArrayItemType
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2namespace Apie\Core\Metadata;
3
4use Apie\Core\Context\ApieContext;
5use Apie\Core\Context\MetadataFieldHashmap;
6use Apie\Core\Enums\ScalarType;
7use Apie\Core\Lists\ItemList;
8use Apie\Core\Lists\StringList;
9use Apie\Core\Metadata\Concerns\NoValueOptions;
10use ReflectionClass;
11
12final class ItemListMetadata implements MetadataInterface
13{
14    use NoValueOptions;
15
16    /**
17     * @param ReflectionClass<ItemList> $class
18     */
19    public function __construct(private readonly ReflectionClass $class, private readonly bool $creation = true)
20    {
21    }
22
23    public function getDisplayName(): string
24    {
25        return $this->class->getShortName();
26    }
27
28    /**
29     * @return ReflectionClass<ItemList>
30     */
31    public function toClass(): ReflectionClass
32    {
33        return $this->class;
34    }
35
36    public function getHashmap(): MetadataFieldHashmap
37    {
38        return new MetadataFieldHashmap();
39    }
40    
41    public function getRequiredFields(): StringList
42    {
43        return new StringList([]);
44    }
45    public function toScalarType(): ScalarType
46    {
47        return ScalarType::ARRAY;
48    }
49    public function getArrayItemType(): MetadataInterface
50    {
51        $strategy = MetadataFactory::getMetadataStrategyForType(
52            $this->class->getMethod('offsetGet')->getReturnType()
53        );
54        return $this->creation
55            ? $strategy->getCreationMetadata(new ApieContext())
56            : $strategy->getResultMetadata(new ApieContext());
57    }
58}