Completed
Pull Request — master (#39)
by Arman
02:58
created

ModuleLoader::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
/**
4
 * Quantum PHP Framework
5
 * 
6
 * An open source software development framework for PHP
7
 * 
8
 * @package Quantum
9
 * @author Arman Ag. <[email protected]>
10
 * @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
11
 * @link http://quantum.softberg.org/
12
 * @since 2.0.0
13
 */
14
15
namespace Quantum\Routes;
16
17
use Quantum\Exceptions\ModuleLoaderException;
18
use Quantum\Exceptions\ExceptionMessages;
19
use Quantum\Libraries\Storage\FileSystem;
20
use Quantum\Routes\Route;
21
use Closure;
22
23
/**
24
 * ModuleLoader Class
25
 * @package Quantum
26
 * @category Routes
27
 */
28
class ModuleLoader
29
{
30
31
    /**
32
     * Load Modules
33
     * @param Router $router
34
     * @param FileSystem $fs
35
     * @throws ModuleLoaderException
36
     */
37
    public static function loadModulesRoutes(Router $router, FileSystem $fs)
38
    {
39
        $modules = require_once base_dir() . DS . 'config' . DS . 'modules.php';
40
41
        foreach ($modules['modules'] as $module) {
42
            $moduleRoutes = modules_dir() . DS . $module . DS . 'Config' . DS . 'routes.php';
43
44
            if (!$fs->exists($moduleRoutes)) {
45
                throw new ModuleLoaderException(_message(ExceptionMessages::MODULE_NOT_FOUND, $module));
46
            }
47
48
            $routesClosure = require_once $moduleRoutes;
49
50
            if (!$routesClosure instanceof Closure) {
51
                throw new ModuleLoaderException(ExceptionMessages::ROUTES_NOT_CLOSURE);
52
            }
53
54
            $route = new Route($module);
55
56
            $routesClosure($route);
57
58
            $router->setRoutes(array_merge($router->getRoutes(), $route->getRuntimeRoutes()));
59
        }
60
    }
61
62
}
63