createPersistentDataHandler()   B
last analyzed

Complexity

Conditions 6
Paths 6

Size

Total Lines 20

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 6.1666

Importance

Changes 0
Metric Value
cc 6
nc 6
nop 1
dl 0
loc 20
ccs 10
cts 12
cp 0.8333
crap 6.1666
rs 8.9777
c 0
b 0
f 0
1
<?php
2
/**
3
 * Copyright 2017 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
namespace Facebook\PersistentData;
24
25
use InvalidArgumentException;
26
27
class PersistentDataFactory
28
{
29
    private function __construct()
30
    {
31
        // a factory constructor should never be invoked
32
    }
33
34
    /**
35
     * PersistentData generation.
36
     *
37
     * @param null|PersistentDataInterface|string $handler
38
     *
39
     * @throws InvalidArgumentException if the persistent data handler isn't "session", "memory", or an instance of Facebook\PersistentData\PersistentDataInterface
40
     *
41
     * @return PersistentDataInterface
42
     */
43 16
    public static function createPersistentDataHandler($handler)
44
    {
45 16
        if (!$handler) {
46 10
            return session_status() === PHP_SESSION_ACTIVE
47
                ? new SessionPersistentDataHandler()
48 10
                : new InMemoryPersistentDataHandler();
49
        }
50
51 6
        if ($handler instanceof PersistentDataInterface) {
52 3
            return $handler;
53
        }
54
55 3
        if ('session' === $handler) {
56
            return new SessionPersistentDataHandler();
57
        }
58 3
        if ('memory' === $handler) {
59 2
            return new InMemoryPersistentDataHandler();
60
        }
61
62 1
        throw new InvalidArgumentException('The persistent data handler must be set to "session", "memory", or be an instance of Facebook\PersistentData\PersistentDataInterface');
63
    }
64
}
65