Subversion Repositories cheapmusic

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
25 - 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
 */
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
}