2dojo/module_manager

0.0.2 2017-10-05 08:34 UTC

This package is not auto-updated.

Last update: 2024-09-30 00:21:06 UTC


README

Latest Stable Version Build Status codecov Scrutinizer Code Quality License

目录

安装

模块管理器可以通过 composer 安装

composer require 2dojo/module_manager

此包使用 Laravel 自动发现功能,所以 ServiceProvider 和 Facade 会自动注册。

安装此包后,您需要在您的 AppServiceProvider boot 方法中调用 ModuleManager facade 的 initializeModules 方法。

<?php

namespace App\Providers;

...

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        ModuleManager::initializeModules();
    }
}

如果您想将模块选项存储在数据库中,您需要发布迁移和配置

php artisan vendor:publish --provider="TwoDojo\ModuleManager\ModuleManagerServiceProvider"

运行迁移

php artisan migrate

最后,将配置中的注册条目更改为 database

// config/module_manager.php
'registry' => 'database'

模块开发

您可以在独立的 composer 包或您的 laravel 项目中创建模块,例如在 app/Modules 目录。

<?php

namespace App\Modules;

use TwoDojo\Module\AbstractModule;

class ExampleModule extends AbstractModule
{
    /**
    * @var string The module display name
    */
    protected $name = 'ExampleModule';
}

之后,您需要在 ModuleManager 中注册模块,例如在您的 AppServiceProvider register 方法中,或者如果您创建了一个独立的 composer 包,您可以在您的包 ServiceProvider boot 方法中注册。

<?php

namespace App\Providers;

...

class PackageServiceProvider extends ServiceProvider
{
    public function boot()
    {
        ModuleManager::registerModule(ExampleModule::class);
        
        ...
    }
}

模块管理器方法

registerModule

/**
* Register a module to the module manager.
*
* @param string $moduleClass The module class
* @return bool
*/
public function registerModule(string $moduleClass) : bool

initializeModules

/**
* Initialize the registered modules
*/
public function initializeModules()

enableModule

/**
 * Enable a module
 *
 * @param $uniqueName The module unique name
 * @return bool
 */
public function enableModule($uniqueName) : bool

disableModule

/**
 * Disable a module
 *
 * @param string $uniqueName The module unique name
 * @return bool
 */
public function disableModule($uniqueName) : bool