/
Wild_RNB
/
ASU
Обзор
Документация
Войти
/
Wild_RNB
/
ASU
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
src/Module/Manager.php
64 строки
1 KB
am190620045-afk
Integrate module lifecycle hooks into manager
15 июл 2026, 22:14
15 июл 2026, 22:14
d3f373a
Код
Авторство
О чём код?
<?php declare(strict_types=1); namespace ASU\Module; final class Manager { private array $modules = []; public function register(string $name, Contract $module): void { $this->modules[$name] = $module; $module->register(); } public function loadManifest(string $directory): array { $loader = new Loader(); $manifest = $loader->load($directory); if (($manifest['enabled'] ?? false) === true) { $this->modules[$manifest['name']] = $manifest; } return $manifest; } public function boot(): array { foreach ($this->modules as $module) { if ($module instanceof Lifecycle) { $module->beforeBoot(); } if ($module instanceof Contract) { $module->boot(); } if ($module instanceof Lifecycle) { $module->afterBoot(); } } return array_keys($this->modules); } public function shutdown(): void { foreach ($this->modules as $module) { if ($module instanceof Lifecycle) { $module->beforeShutdown(); } if ($module instanceof Contract) { $module->shutdown(); } if ($module instanceof Lifecycle) { $module->afterShutdown(); } } } }