Serializer   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 14
c 1
b 0
f 0
dl 0
loc 30
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A serialize() 0 4 1
A fixSerializer() 0 12 2
A getParentDirectory() 0 4 1
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
}