PersistentDataFactory   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
c 1
b 0
f 0
lcom 0
cbo 2
dl 0
loc 38
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
B createPersistentDataHandler() 0 21 6
1
<?php
2
/**
3
 * Copyright 2016 Facebook, Inc.
4
 *
5
 * You are hereby granted a non-exclusive, worldwide, royalty-free license to
6
 * use, copy, modify, and distribute this software in source code or binary
7
 * form for use in connection with the web services and APIs provided by
8
 * Facebook.
9
 *
10
 * As with any software that integrates with the Facebook platform, your use
11
 * of this software is subject to the Facebook Developer Principles and
12
 * Policies [http://developers.facebook.com/policy/]. This copyright notice
13
 * shall be included in all copies or substantial portions of the software.
14
 *
15
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21
 * DEALINGS IN THE SOFTWARE.
22
 *
23
 */
24
namespace Facebook\PersistentData;
25
26
use InvalidArgumentException;
27
28
class PersistentDataFactory
29
{
30
    private function __construct()
31
    {
32
        // a factory constructor should never be invoked
33
    }
34
35
    /**
36
     * PersistentData generation.
37
     *
38
     * @param PersistentDataInterface|string|null $handler
39
     *
40
     * @throws InvalidArgumentException If the persistent data handler isn't "session", "memory", or an instance of Facebook\PersistentData\PersistentDataInterface.
41
     *
42
     * @return PersistentDataInterface
43
     */
44
    public static function createPersistentDataHandler($handler)
45
    {
46
        if (!$handler) {
47
            return session_status() === PHP_SESSION_ACTIVE
48
                ? new FacebookSessionPersistentDataHandler()
49
                : new FacebookMemoryPersistentDataHandler();
50
        }
51
52
        if ($handler instanceof PersistentDataInterface) {
53
            return $handler;
54
        }
55
56
        if ('session' === $handler) {
57
            return new FacebookSessionPersistentDataHandler();
58
        }
59
        if ('memory' === $handler) {
60
            return new FacebookMemoryPersistentDataHandler();
61
        }
62
63
        throw new InvalidArgumentException('The persistent data handler must be set to "session", "memory", or be an instance of Facebook\PersistentData\PersistentDataInterface');
64
    }
65
}
66