LoadsModules::loadModules()   B
last analyzed

Complexity

Conditions 7
Paths 6

Size

Total Lines 19
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 7
eloc 10
c 1
b 0
f 0
nc 6
nop 1
dl 0
loc 19
rs 8.8333
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