FilenameTrait::getWildcard()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 5
ccs 0
cts 3
cp 0
crap 2
rs 10
c 1
b 0
f 0
1
<?php
2
/**
3
 * This file is part of the Cache package.
4
 *
5
 * Copyright (c) Daniel González
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 *
10
 * @author Daniel González <[email protected]>
11
 * @author Arnold Daniels <[email protected]>
12
 */
13
14
declare(strict_types=1);
15
16
namespace Desarrolla2\Cache\Option;
17
18
use TypeError;
19
use Desarrolla2\Cache\File\BasicFilename;
20
21
/**
22
 * Use filename generator
23
 */
24
trait FilenameTrait
25
{
26
    /**
27
     * @var callable
28
     */
29
    protected $filename;
30
31
32
    /**
33
     * Filename format or callable.
34
     * The filename format will be applied using sprintf, replacing `%s` with the key.
35
     *
36
     * @param string|callable $filename
37
     * @return void
38
     */
39 197
    protected function setFilenameOption($filename): void
40
    {
41 197
        if (is_string($filename)) {
42
            $filename = new BasicFilename($filename);
43
        }
44
45 197
        if (!is_callable($filename)) {
46
            throw new TypeError("Filename should be a string or callable");
47
        }
48
49 197
        $this->filename = $filename;
50
    }
51
52
    /**
53
     * Get the filename callable
54
     *
55
     * @return callable
56
     */
57 591
    protected function getFilenameOption(): callable
58
    {
59 591
        if (!isset($this->filename)) {
60 394
            $this->filename = new BasicFilename('%s.' . $this->getPacker()->getType());
0 ignored issues
show
Bug introduced by
It seems like getPacker() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

60
            $this->filename = new BasicFilename('%s.' . $this->/** @scrutinizer ignore-call */ getPacker()->getType());
Loading history...
61
        }
62
63 591
        return $this->filename;
64
    }
65
66
    /**
67
     * Create a filename based on the key
68
     *
69
     * @param string|mixed $key
70
     * @return string
71
     */
72 756
    protected function getFilename($key): string
73
    {
74 756
        $id = $this->keyToId($key);
0 ignored issues
show
Bug introduced by
It seems like keyToId() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

74
        /** @scrutinizer ignore-call */ 
75
        $id = $this->keyToId($key);
Loading history...
75 468
        $generator = $this->getFilenameOption();
76
77 468
        return $this->cacheDir . DIRECTORY_SEPARATOR . $generator($id);
78
    }
79
80
    /**
81
     * Get a wildcard for all files
82
     *
83
     * @return string
84
     */
85
    protected function getWildcard(): string
86
    {
87
        $generator = $this->getFilenameOption();
88
89
        return $this->cacheDir . DIRECTORY_SEPARATOR . $generator('');
90
    }
91
}
92