魔术 / module
模块管理包
1.0.0
2019-07-22 16:11 UTC
Requires
- psr/container: ^1.0
Requires (Dev)
- codeception/codeception: ^3.0
This package is auto-updated.
Last update: 2024-09-06 22:31:36 UTC
README
此包提供了一个插件模式的实现。
快速开始
模块必须实现 Voodoo\Module\Contracts\ModuleInterface
和/或实现该命名空间中指定的ProviderInterfaces之一。
ModuleManager通过使用ModuleResolverInterface
的实现来管理模块并解析它们。
<?php $modules = [ FirstModule::class, SecondModule::class, ]; $container = new DiContainer(); $resolver = new \Voodoo\Module\ContainerModuleResolver($container); $moduleManager = new \Voodoo\Module\ModuleManager($modules, $resolver); // calls di() method on modules implementing DiProvider $diConfig = $moduleManager->getContainerConfiguration(); // calls routes() method on modules implementing RouteProvider $routerConfig = $moduleManager->getRouterConfiguration(); // calls configuration() method on modules implementing ConfigurationProvider $moduleConfig = $moduleManager->getModuleConfiguration(); // calls events() method on modules implementing EventProvider $eventConfig = $moduleManager->getEventConfiguration(); // calls middleware() method on modules implementing MiddlewareProvider $middleware = $moduleManager->getMiddlewareConfiguration(); // calls bootstrap($container) modules $moduleManager->bootstrapModules($container);
模块的外观如下
<?php use Voodoo\Module\Contracts\DiProvider; use Voodoo\Module\Contracts\RouteProvider; use Voodoo\Module\Contracts\MiddlewareProvider; class FirstModule implements DiProvider, RouteProvider, MiddlewareProvider { public function bootstrap(ContainerInterface $container) { // Some bootstrapping code for this module } public function di() : array { return []; } public function routes() : array { return []; } public function middleware() : array { return []; } }