TwitterJsonSerializer   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 85
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 8
dl 0
loc 85
ccs 33
cts 33
cp 1
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 18 1
A serialize() 0 10 3
A unserialize() 0 12 3
A build() 0 12 1
1
<?php
2
3
namespace Twitter\Serializer;
4
5
use Twitter\Serializer;
6
use Twitter\TwitterSerializable;
7
use Twitter\TwitterSerializer;
8
9
class TwitterJsonSerializer implements Serializer
10
{
11
    /**
12
     * @var TwitterSerializer[]
13
     */
14
    private $serializers;
15
16
    /**
17
     * Constructor
18
     *
19
     * @param TwitterEventTargetSerializer $twitterTargetSerializer
20
     * @param TwitterDirectMessageSerializer $directMessageSerializer
21
     * @param TwitterEventSerializer $twitterEventSerializer
22
     * @param TwitterFriendsSerializer $twitterFriendsSerializer
23
     * @param TwitterDisconnectSerializer $twitterDisconnectSerializer
24
     * @param TwitterDeleteSerializer $twitterDeleteSerializer
25
     * @param TwitterUserSerializer $twitterUserSerializer
26
     */
27 51
    public function __construct(
28
        TwitterEventTargetSerializer $twitterTargetSerializer,
29
        TwitterDirectMessageSerializer $directMessageSerializer,
30
        TwitterEventSerializer $twitterEventSerializer,
31
        TwitterFriendsSerializer $twitterFriendsSerializer,
32
        TwitterDisconnectSerializer $twitterDisconnectSerializer,
33
        TwitterDeleteSerializer $twitterDeleteSerializer,
34
        TwitterUserSerializer $twitterUserSerializer
35
    ) {
36 51
        $this->serializers = [];
37 51
        $this->serializers[] = $twitterTargetSerializer;
38 51
        $this->serializers[] = $directMessageSerializer;
39 51
        $this->serializers[] = $twitterEventSerializer;
40 51
        $this->serializers[] = $twitterFriendsSerializer;
41 51
        $this->serializers[] = $twitterDisconnectSerializer;
42 51
        $this->serializers[] = $twitterDeleteSerializer;
43 51
        $this->serializers[] = $twitterUserSerializer;
44 51
    }
45
46
    /**
47
     * @param  TwitterSerializable $object
48
     * @return string
49
     */
50 24
    public function serialize(TwitterSerializable $object)
51
    {
52 24
        foreach ($this->serializers as $serializer) {
53 24
            if ($serializer->canSerialize($object)) {
54 22
                return json_encode($serializer->serialize($object));
55
            }
56 14
        }
57
58 3
        throw new \BadMethodCallException('Not Implemented');
59
    }
60
61
    /**
62
     * @param  string $string
63
     * @return TwitterSerializable
64
     */
65 24
    public function unserialize($string)
66
    {
67 24
        $object = json_decode($string);
68
69 24
        foreach ($this->serializers as $serializer) {
70 24
            if ($serializer->canUnserialize($object)) {
71 22
                return $serializer->unserialize($object);
72
            }
73 14
        }
74
75 3
        throw new \BadMethodCallException('Not Implemented');
76
    }
77
78
    /**
79
     * @return TwitterJsonSerializer
80
     */
81 3
    public static function build()
82
    {
83 3
        return new self(
84 3
            TwitterEventTargetSerializer::build(),
85 3
            TwitterDirectMessageSerializer::build(),
86 3
            TwitterEventSerializer::build(),
87 3
            TwitterFriendsSerializer::build(),
88 3
            TwitterDisconnectSerializer::build(),
89 3
            TwitterDeleteSerializer::build(),
90 3
            TwitterUserSerializer::build()
91 2
        );
92
    }
93
}
94