-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFactory.php
178 lines (154 loc) · 5.41 KB
/
Factory.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
<?php
namespace Phassets;
use Phassets\Interfaces\FileHandler;
use Phassets\Interfaces\AssetsMerger;
use Phassets\Interfaces\CacheAdapter;
use Phassets\Interfaces\Configurator;
use Phassets\Interfaces\Deployer;
use Phassets\Interfaces\Filter;
use Phassets\Interfaces\Logger;
/**
* Phassets Factory
*
* This content is released under the MIT License (MIT).
* @see LICENSE file
*/
class Factory
{
/**
* Creates a Configurator instance.
*
* @param string $class Fully qualified class name of a Configurator class
*
* @return Configurator|bool Created instance of the provided Configurator;
* false on failure
*/
public function buildConfigurator($class)
{
if (!class_exists($class) || !is_subclass_of($class, Configurator::class)) {
$class = "\\Phassets\\Config\\$class";
}
if (class_exists($class) && is_subclass_of($class, Configurator::class)) {
return new $class;
}
return false;
}
/**
* Creates a Logger instance.
*
* @param string $class Fully qualified class name of a Logger class
* @param Configurator $configurator Currently used Configurator of Phassets
*
* @return bool|Logger Created instance of the provided Logger; false on failure
*/
public function buildLogger($class, Configurator $configurator)
{
if (!class_exists($class) || !is_subclass_of($class, Logger::class)) {
$class = "\\Phassets\\Loggers\\$class";
}
if (class_exists($class) && is_subclass_of($class, Logger::class)) {
return new $class($configurator);
}
return false;
}
/**
* Creates a CacheAdapter instance.
*
* @param string $class Fully qualified class name of a CacheAdapter class
* @param Configurator $configurator Currently used Configurator of Phassets
*
* @return bool|CacheAdapter Created instance of the provided CacheAdapter; false on failure
*/
public function buildCacheAdapter($class, Configurator $configurator)
{
if (!class_exists($class) || !is_subclass_of($class, CacheAdapter::class)) {
$class = "\\Phassets\\CacheAdapters\\$class";
}
if (class_exists($class) && is_subclass_of($class, CacheAdapter::class)) {
return new $class($configurator);
}
return false;
}
/**
* Creates a new Asset instance.
*
* @param string $file Full path of the asset
* @return Asset
*/
public function buildAsset($file)
{
return new Asset($file);
}
/**
* Creates a Deployer instance.
*
* @param string $class Fully qualified class name of a Deployer class
* @param Configurator $configurator Currently used Configurator of Phassets
* @param CacheAdapter $cacheAdapter Currently used CacheAdapter of Phassets
*
* @return Deployer|bool Created instance of the provided Deployer; false on failure
*/
public function buildDeployer($class, Configurator $configurator, CacheAdapter $cacheAdapter)
{
if (!class_exists($class) || !is_subclass_of($class, Deployer::class)) {
$class = "\\Phassets\\Deployers\\$class";
}
if (class_exists($class) && is_subclass_of($class, Deployer::class)) {
return new $class($configurator, $cacheAdapter);
}
return false;
}
/**
* Creates a Filter instance.
*
* @param string $class Fully qualified class name of a Filter class
* @param Configurator $configurator Currently used Configurator of Phassets
*
* @return Filter|bool Created instance of the provided Filter; false on failure
*/
public function buildFilter($class, Configurator $configurator)
{
if (!class_exists($class) || !is_subclass_of($class, Filter::class)) {
$class = "\\Phassets\\Filters\\$class";
}
if (class_exists($class) && is_subclass_of($class, Filter::class)) {
return new $class($configurator);
}
return false;
}
/**
* Creates an AssetContentsHandler instance.
*
* @param string $class Fully qualified class name of a AssetContentsHandler class
*
* @return bool|FileHandler Created instance of the provided AssetContentsHandler; false on failure
*/
public function buildAssetContentsHandler($class)
{
if (!class_exists($class) || !is_subclass_of($class, FileHandler::class)) {
$class = "\\Phassets\\AssetContentsHandlers\\$class";
}
if (class_exists($class) && is_subclass_of($class, FileHandler::class)) {
return new $class();
}
return false;
}
/**
* Creates an AssetsMerger instance.
*
* @param string $class Fully qualified class name of a AssetsMerger class
* @param Configurator $configurator Currently used Configurator of Phassets
*
* @return bool|AssetsMerger Created instance of the provided AssetsMerger; false on failure
*/
public function buildAssetsMerger($class, Configurator $configurator)
{
if (!class_exists($class) || !is_subclass_of($class, AssetsMerger::class)) {
$class = "\\Phassets\\AssetsMergers\\$class";
}
if (class_exists($class) && is_subclass_of($class, AssetsMerger::class)) {
return new $class($configurator);
}
return false;
}
}