Total Complexity | 5 |
Total Lines | 62 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | <?php |
||
11 | abstract class AbstractPluginFactory implements PluginFactoryInterface |
||
12 | { |
||
13 | /** |
||
14 | * Class name of plugin this factory will create |
||
15 | */ |
||
16 | const PLUGIN_CLASS_NAME = ''; |
||
17 | |||
18 | |||
19 | /** |
||
20 | * Configure plugin instance |
||
21 | * |
||
22 | * @param PluginInterface $plugin |
||
23 | * @return PluginInterface |
||
24 | */ |
||
25 | protected function configPlugin(PluginInterface $plugin): PluginInterface |
||
26 | { |
||
27 | // Do config |
||
28 | |||
29 | return $plugin; |
||
30 | } |
||
31 | |||
32 | |||
33 | /** |
||
34 | * @inheritDoc |
||
35 | */ |
||
36 | public function createPlugin(): PluginInterface |
||
45 | } |
||
46 | |||
47 | |||
48 | /** |
||
49 | * Get or reuse instance of self |
||
50 | * |
||
51 | * @return PluginFactoryInterface |
||
52 | */ |
||
53 | public static function getInstance(): PluginFactoryInterface |
||
54 | { |
||
55 | static $instances = []; |
||
56 | |||
57 | $className = get_called_class(); |
||
58 | |||
59 | if (!isset($instances[$className])) { |
||
60 | $instances[$className] = new $className(); |
||
61 | } |
||
62 | |||
63 | return $instances[$className]; |
||
64 | } |
||
65 | |||
66 | |||
67 | /** |
||
68 | * @inheritDoc |
||
69 | */ |
||
70 | public function getPluginClass(): string |
||
73 | } |
||
74 | } |
||
75 |