FileCacher   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 6
dl 0
loc 42
ccs 7
cts 7
cp 1
rs 10
c 0
b 0
f 0
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A get() 0 5 2
A __construct() 0 3 1
A put() 0 3 1
1
<?php
2
3
namespace IproSoftwareApi\AccessToken;
4
5
use IproSoftwareApi\Contracts\AccessToken;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, IproSoftwareApi\AccessToken\AccessToken. Consider defining an alias.

Let?s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let?s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the same runtime, you will see a PHP error such as the following:

PHP Fatal error:  Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
6
use IproSoftwareApi\Contracts\AccessTokenCacher;
7
8
class FileCacher implements AccessTokenCacher
9
{
10
    /**
11
     * @var string
12
     */
13
    protected $filePath;
14
15
    /**
16
     * FileCacher constructor.
17
     *
18
     * @param string $filePath
19
     */
20 2
    public function __construct(string $filePath)
21
    {
22 2
        $this->filePath = $filePath;
23
    }
24
25
    /**
26
     * Store an item in the cache.
27
     *
28
     * @param mixed $accessToken
29
     * @param int   $ttl         - time in seconds
30
     *
31
     * @return bool
32
     * @static
33
     */
34 2
    public function put(AccessToken $accessToken, int $ttl = 0)
35
    {
36 2
        return (bool) file_put_contents($this->filePath, serialize($accessToken));
37
    }
38
39
    /**
40
     * Retrieve an item from the cache by key.
41
     *
42
     * @return mixed
43
     * @static
44
     */
45 1
    public function get(): ?AccessToken
46
    {
47 1
        $token = unserialize(file_get_contents($this->filePath));
48
49 1
        return ($token instanceof AccessToken) ? $token : null;
50
    }
51
}
52