|
2 | 2 |
|
3 | 3 | namespace Modulus\Framework; |
4 | 4 |
|
| 5 | +use Modulus\Framework\Plugin\Load; |
5 | 6 | use App\Resolvers\AppServiceResolver; |
6 | 7 | use Modulus\Framework\Upstart\AppLogger; |
| 8 | +use Modulus\Framework\Upstart\Prototype; |
7 | 9 | use Modulus\Framework\Upstart\AppConnect; |
8 | 10 | use Modulus\Framework\Upstart\HandleCors; |
9 | 11 | use Modulus\Framework\Upstart\ErrorReport; |
@@ -44,47 +46,86 @@ class Upstart |
44 | 46 | */ |
45 | 47 | public function boot(?bool $isConsole = false) : void |
46 | 48 | { |
| 49 | + /** |
| 50 | + * Add cors to the request |
| 51 | + */ |
47 | 52 | $this->addCors(); |
| 53 | + |
| 54 | + /** |
| 55 | + * Don't load framework components, if |
| 56 | + * the application has already started. |
| 57 | + */ |
48 | 58 | if (Upstart::$isReady) return; |
49 | 59 |
|
| 60 | + /** |
| 61 | + * Load application components |
| 62 | + */ |
| 63 | + $this->startCore($isConsole); |
| 64 | + $this->startApp($isConsole); |
| 65 | + $this->startRouter($isConsole); |
| 66 | + |
| 67 | + /** |
| 68 | + * Mark "application" as ready to indicate, that |
| 69 | + * it has started. |
| 70 | + */ |
| 71 | + Upstart::$isReady = true; |
| 72 | + } |
| 73 | + |
| 74 | + /** |
| 75 | + * Load the core components |
| 76 | + * |
| 77 | + * @param bool $isConsole |
| 78 | + * @return void |
| 79 | + */ |
| 80 | + private function startCore(bool $isConsole) |
| 81 | + { |
50 | 82 | $this->bootEnv(); |
51 | 83 | $this->initialize(); |
52 | 84 | $this->logger(); |
53 | 85 | $this->errorHandling($isConsole); |
54 | 86 | $this->bootRemember(); |
55 | 87 |
|
| 88 | + /** |
| 89 | + * Create class aliases |
| 90 | + */ |
56 | 91 | $aliases = config('app.aliases'); |
57 | 92 |
|
58 | 93 | foreach($aliases as $alias => $class) { |
59 | 94 | class_alias($class, $alias); |
60 | 95 | } |
| 96 | + } |
61 | 97 |
|
| 98 | + /** |
| 99 | + * Boot the application |
| 100 | + * |
| 101 | + * @param bool $isConsole |
| 102 | + * @return void |
| 103 | + */ |
| 104 | + private function startApp(bool $isConsole) |
| 105 | + { |
62 | 106 | (new AppServiceResolver)->start(Application::prototype($isConsole)); |
63 | 107 |
|
64 | | - $this->autoload_plugins($isConsole); |
| 108 | + /** |
| 109 | + * Load framework plugins |
| 110 | + */ |
| 111 | + Load::plugins($isConsole); |
65 | 112 |
|
| 113 | + /** |
| 114 | + * Extend the medusa templating language |
| 115 | + */ |
66 | 116 | $this->directives(); |
67 | | - $this->handleSwish(); |
68 | | - $this->route($isConsole); |
69 | | - |
70 | | - Upstart::$isReady = true; |
71 | 117 | } |
72 | 118 |
|
73 | 119 | /** |
74 | | - * autoload_plugins |
| 120 | + * Start the application router |
75 | 121 | * |
76 | 122 | * @param bool $isConsole |
77 | 123 | * @return void |
78 | 124 | */ |
79 | | - public function autoload_plugins(bool $isConsole) |
| 125 | + private function startRouter(bool $isConsole) |
80 | 126 | { |
81 | | - $plugins = config('app.plugins'); |
82 | | - |
83 | | - if (env('DEV_AUTOLOAD_PLUGINS') == true) { |
84 | | - foreach($plugins as $plugin => $class) { |
85 | | - $class::boot((object)Application::prototype($isConsole)); |
86 | | - } |
87 | | - } |
| 127 | + $this->handleSwish(); |
| 128 | + $this->route($isConsole); |
88 | 129 | } |
89 | 130 |
|
90 | 131 | /** |
|
0 commit comments