LoadsModules   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 13
c 1
b 0
f 0
dl 0
loc 43
rs 10
wmc 9

2 Methods

Rating   Name   Duplication   Size   Complexity  
B loadModules() 0 19 7
A loadModule() 0 4 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PrettyBx\Support\Traits;
6
7
trait LoadsModules
8
{
9
    /**
10
     * loadModules.
11
     *
12
     * @access protected
13
     * @param array|string|null $modules Default: null
14
     * @return void
15
     */
16
    protected function loadModules($modules = null): void
17
    {
18
        if (is_string($modules)) {
19
            $this->loadModule($modules);
20
21
            return;
22
        }
23
24
        if (is_array($modules)) {
25
            foreach ($modules as $moduleId) {
26
                $this->loadModule($moduleId);
27
            }
28
29
            return;
30
        }
31
32
        if (property_exists($this, 'modules') && is_array($this->modules)) {
33
            foreach ($this->modules as $module) {
34
                $this->loadModule($module);
35
            }
36
        }
37
    }
38
39
    /**
40
     * loadModule.
41
     *
42
     * @access	protected
43
     * @param	string	$moduleId	
44
     * @return	void
45
     */
46
    protected function loadModule(string $moduleId): void
47
    {
48
        if (!container()->make('\Bitrix\Main\Loader')->includeModule($moduleId)) {
49
            throw new \RuntimeException('Module ' . $moduleId . ' could not be loaded');
50
        }
51
    }
52
}
53