Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
93.33% covered (success)
93.33%
14 / 15
80.00% covered (warning)
80.00%
4 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
CustomObjectStrategy
93.33% covered (success)
93.33%
14 / 15
80.00% covered (warning)
80.00%
4 / 5
5.01
0.00% covered (danger)
0.00%
0 / 1
 supports
100.00% covered (success)
100.00%
11 / 11
100.00% covered (success)
100.00%
1 / 1
1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getCreationMetadata
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getModificationMetadata
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getResultMetadata
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2namespace Apie\Core\Metadata\Strategy;
3
4use Apie\Core\Context\ApieContext;
5use Apie\Core\Metadata\CustomObjectsMetadata;
6use Apie\Core\Metadata\MetadataInterface;
7use Apie\Core\Metadata\StrategyInterface;
8use BcMath\Number;
9use DOMAttr;
10use DOMElement;
11use FFI\CData;
12use FFI\CType;
13use GMP;
14use ReflectionClass;
15use SimpleXMLElement;
16use StreamBucket;
17use Uri\Rfc3986\Uri;
18
19class CustomObjectStrategy implements StrategyInterface
20{
21    public static function supports(ReflectionClass $class): bool
22    {
23        return in_array($class->name, [
24            Uri::class,
25            GMP::class,
26            Number::class,
27            StreamBucket::class,
28            CType::class,
29            CData::class,
30            SimpleXMLElement::class,
31            DOMAttr::class,
32            DOMElement::class,
33        ]);
34    }
35
36    /**
37     * @param ReflectionClass<covariant object> $class
38     */
39    public function __construct(private ReflectionClass $class)
40    {
41    }
42
43    public function getCreationMetadata(ApieContext $context): MetadataInterface
44    {
45        return new CustomObjectsMetadata($this->class);
46    }
47
48    public function getModificationMetadata(ApieContext $context): MetadataInterface
49    {
50        return new CustomObjectsMetadata($this->class);
51    }
52
53    public function getResultMetadata(ApieContext $context): MetadataInterface
54    {
55        return new CustomObjectsMetadata($this->class);
56    }
57}