Completed
Push — master ( be4ea7...66bb0f )
by Marko
12s
created

Assets::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
/** @formatter:off
3
 * ******************************************************************
4
 * Created by   Marko Kungla on Jun 20, 2016 - 9:08:14 PM
5
 * Contact      [email protected]
6
 * @copyright   2016 Marko Kungla - https://github.com/mkungla
7
 * @license     The MIT License (MIT)
8
 *
9
 * @category       AframeVR
10
 * @package        aframe-php
11
 *
12
 * Lang         PHP (php version >= 7)
13
 * Encoding     UTF-8
14
 * File         Assets.php
15
 * Code format  PSR-2 and 12
16
 * @link        https://github.com/mkungla/aframe-php
17
 * @issues      https://github.com/mkungla/aframe-php/issues
18
 * ********************************************************************
19
 * Contributors:
20
 * @author Marko Kungla <[email protected]>
21
 * ********************************************************************
22
 * Comments:
23
 * @formatter:on */
24
namespace AframeVR\Core;
25
26
use \AframeVR\Core\Assets\{
27
    AssetAudio,
28
    AssetImage,
29
    AssetItem,
30
    AssetVideo,
31
    Mixin
32
};
33
34
final class Assets
35
{
36
37
    /**
38
     * Array of mixins
39
     *
40
     * @var array
41
     */
42
    protected $assets;
43
44
    /**
45
     * Set assets timeout attribute
46
     *
47
     * @var int
48
     */
49
    protected $attr_timeout;
50
51
    /**
52
     * Asset manager constructor
53
     *
54
     * @param Config $config
55
     */
56 103
    public function __construct(Config $config)
57
    {
58 103
        $this->assets_uri = $config->get('assets_uri');
0 ignored issues
show
Bug introduced by
The property assets_uri does not seem to exist. Did you mean assets?

An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.

If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.

Loading history...
59 103
    }
60
61
    /**
62
     * <a-scene><a-assets><audio>
63
     *
64
     * @param string $id
65
     * @return \AframeVR\Interfaces\Core\Assets\AssetAudioInterface
66
     */
67 1
    public function audio(string $id = '0'): \AframeVR\Interfaces\Core\Assets\AssetAudioInterface
68
    {
69 1
        return $this->assets[$id] ?? $this->assets[$id] = new AssetAudio($id, $this->assets_uri);
0 ignored issues
show
Bug introduced by
The property assets_uri does not seem to exist. Did you mean assets?

An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.

If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.

Loading history...
70
    }
71
72
    /**
73
     * <a-scene><a-assets><img>
74
     *
75
     * @param string $id
76
     * @return \AframeVR\Interfaces\Core\Assets\AssetImageInterface
77
     */
78 1
    public function img(string $id = '0'): \AframeVR\Interfaces\Core\Assets\AssetImageInterface
79
    {
80 1
        return $this->assets[$id] ?? $this->assets[$id] = new AssetImage($id, $this->assets_uri);
0 ignored issues
show
Bug introduced by
The property assets_uri does not seem to exist. Did you mean assets?

An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.

If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.

Loading history...
81
    }
82
83
    /**
84
     * <a-scene><a-assets><a-asset-item>
85
     *
86
     * @param string $id
87
     * @return \AframeVR\Interfaces\Core\Assets\AssetItemInterface
88
     */
89 1
    public function item(string $id = '0'): \AframeVR\Interfaces\Core\Assets\AssetItemInterface
90
    {
91 1
        return $this->assets[$id] ?? $this->assets[$id] = new AssetItem($id, $this->assets_uri);
0 ignored issues
show
Bug introduced by
The property assets_uri does not seem to exist. Did you mean assets?

An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.

If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.

Loading history...
92
    }
93
94
    /**
95
     * <a-scene><a-assets><video>
96
     *
97
     * @param string $id
98
     * @return \AframeVR\Interfaces\Core\Assets\AssetVideoInterface
99
     */
100 1
    public function video(string $id = '0'): \AframeVR\Interfaces\Core\Assets\AssetVideoInterface
101
    {
102 1
        return $this->assets[$id] ?? $this->assets[$id] = new AssetVideo($id, $this->assets_uri);
0 ignored issues
show
Bug introduced by
The property assets_uri does not seem to exist. Did you mean assets?

An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.

If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.

Loading history...
103
    }
104
105
    /**
106
     * Mixin which will be directly applied to element usin it
107
     *
108
     * A-Frame PHP does not create <a-mixin>. Instead it is appling
109
     * mixin directly on element using this mixin.
110
     *
111
     * @param string $id
112
     * @return \AframeVR\Interfaces\Core\Assets\MixinInterface
113
     */
114 3
    public function mixin(string $id = '0'): \AframeVR\Interfaces\Core\Assets\MixinInterface
115
    {
116 3
        return $this->assets[$id] ?? $this->assets[$id] = new Mixin($id, $this->assets_uri);
0 ignored issues
show
Bug introduced by
The property assets_uri does not seem to exist. Did you mean assets?

An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.

If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.

Loading history...
117
    }
118
119
    /**
120
     * Setting a timeout
121
     *
122
     * @param int $milliseconds
123
     * @return Assets
124
     */
125 1
    public function timeout(int $milliseconds = 3000)
126
    {
127 1
        $this->attr_timeout = $milliseconds;
128 1
        return $this;
129
    }
130
131
    /**
132
     * Get all assets
133
     *
134
     * @return array|null
135
     */
136 24
    public function getAssets()
137
    {
138 24
        return $this->assets;
139
    }
140
}
141