ResponseSerializer::fixSerializer()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 8
c 1
b 0
f 0
dl 0
loc 12
rs 10
cc 2
nc 2
nop 0
1
<?php
2
namespace PortlandLabs\Slackbot\Slack\Api\Payload;
3
4
use CL\Slack\Payload\PayloadInterface;
5
use CL\Slack\Serializer\PayloadResponseSerializer;
6
use CL\Slack\Serializer\PayloadSerializer;
7
use JMS\Serializer\SerializerBuilder;
8
9
class ResponseSerializer extends PayloadResponseSerializer
10
{
11
12
    protected $localSerializer;
13
14
    protected function fixSerializer()
15
    {
16
        if (!$this->localSerializer) {
17
            $parentMetaDir = $this->getParentDirectory() . '/../Resources/config/serializer';
18
            $metaDir = realpath(dirname(__DIR__, 4) . '/resources/metadata/');
19
20
            $this->serializer = SerializerBuilder::create()
21
                ->addMetadataDir($parentMetaDir)
22
                ->addMetadataDir($metaDir, 'PortlandLabs\Slackbot\Slack\Api\Payload')
23
                ->build();
24
25
            $this->localSerializer = true;
26
        }
27
    }
28
29
    /**
30
     * @param array  $payloadResponse
31
     * @param string $payloadResponseClass
32
     *
33
     * @return PayloadResponseInterface
0 ignored issues
show
Bug introduced by
The type PortlandLabs\Slackbot\Sl...ayloadResponseInterface was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
34
     */
35
    public function deserialize(array $payloadResponse, $payloadResponseClass)
36
    {
37
        $this->fixSerializer();
38
        return parent::deserialize($payloadResponse, $payloadResponseClass);
39
    }
40
41
    private function getParentDirectory()
42
    {
43
        $reflectioon = new \ReflectionClass(PayloadSerializer::class);
44
        return \dirname($reflectioon->getFileName());
45
    }
46
47
}