Serializer::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\PayloadSerializer;
6
use JMS\Serializer\SerializerBuilder;
7
8
class Serializer extends PayloadSerializer
9
{
10
11
    protected $localSerializer;
12
13
    protected function fixSerializer()
14
    {
15
        if (!$this->localSerializer) {
16
            $parentMetaDir = $this->getParentDirectory() . '/../Resources/config/serializer';
17
            $metaDir = realpath(dirname(__DIR__, 4) . '/resources/metadata/');
18
19
            $this->serializer = SerializerBuilder::create()
20
                ->addMetadataDir($parentMetaDir)
21
                ->addMetadataDir($metaDir, 'PortlandLabs\Slackbot\Slack\Api\Payload')
22
                ->build();
23
24
            $this->localSerializer = true;
25
        }
26
    }
27
28
    public function serialize(PayloadInterface $payload)
29
    {
30
        $this->fixSerializer();
31
        return parent::serialize($payload);
32
    }
33
34
    private function getParentDirectory()
35
    {
36
        $reflectioon = new \ReflectionClass(PayloadSerializer::class);
37
        return \dirname($reflectioon->getFileName());
38
    }
39
40
}