kodepandai/laravel-modular

此包的最新版本(dev-develop)没有可用的许可证信息。

dev-develop 2024-02-02 01:35 UTC

This package is auto-updated.

Last update: 2024-10-01 00:08:18 UTC


README

此分支正在开发中!待办事项:改进文档

以模块化方式对您的laravel应用进行打包。灵感来源于 spatie/laravel-package-tools

此laravel模块化包基于每个模块被视为独立包的概念。因此,它允许您以构建laravel包的方式结构化模块文件夹。

安装

$ composer require kodepandai/laravel-modular

安装后,将此配置添加到您的 composer.json

"repositories": [
  // ...
  {
    "type": "path",
    "url": "modules/*/",
    "options": {
      "symlink": true
    }
  }
  // ...
],

用法

新建模块

$ php artisan modular:make Sales

*Sales 是模块名称

使用模块化

此包 自动加载资源(路由、配置、迁移等),相反,您需要手动在模块 ServiceProvider 中加载它们。

模块服务提供者

namespace Sales\Providers;

use KodePandai\Modular\Module;
use KodePandai\Modular\Providers\ModuleServiceProvider;

class SalesServiceProvider extends ModuleServiceProvider
{
    public function configureModule(Module $module): void
    {
        $module->name('Sales')
               ->hasViews()
               ->hasMigrations()
               ->hasRoutes();

        // $module->hasOtherThings() ...
    }
}

配置

将您的配置文件放在 <module root>/config 文件夹中,然后使用以下方式注册:

// load all configs
$module->hasConfigs();

// load one config
$module->hasConfig('sales');

// load multiple configs
$module->hasConfigs(['sales', 'services']);

视图

将您的视图文件放在 <module root>/resources/views 文件夹中,然后使用以下方式注册:

// load all views
$module->hasViews();

视图组件

将您的视图组件文件放在 <module root>/src/Components 文件夹中,然后使用以下方式注册:

// load one <sales::header /> component
$module->hasViewComponent('sales', \Sales\Components\Header::class);

// load multiple components
$module->hasViewComponents('sales', [
  \Sales\Components\Header::class, // <sales::header />
  \Sales\Components\Sidebar::class, // <sales::sidebar />
]);

翻译

将您的翻译文件放在 <module root>/lang<module root>/resources/lang 文件夹中,然后使用以下方式注册:

$module->hasTranslations();

迁移

将您的迁移文件放在 <module root>/database/migrations 文件夹中,然后使用以下方式注册:

// load all migrations
$module->hasMigrations();

注意

  • 对于工厂,放在 <module root>/database/factories 文件夹
  • 对于种子,放在 <module root>/database/seeders 文件夹

路由

将您的路由文件放在 <module root>/routes 文件夹中,然后使用以下方式注册:

// load all routes
$module->hasRoutes();

// load one route
$module->hasRoute('web');

// load multiple routes
$module->hasRoutes(['web', 'api']);

命令

将您的命令文件放在 <module root>/src/Commands 文件夹中,然后使用以下方式注册:

// load all commands
$module->hasCommmands();

// load one command
$module->hasCommand(\Sales\Commands\CheckServer::class);

// load multiple commands
$module->hasCommands([
  \Sales\Commands\CheckVersion::class,
  \Sales\Commands\CheckServer::class,
]);

辅助函数

将您的辅助函数放在 <module root>/src/helpers.php 文件中,然后使用以下方式注册:

// load helper
$module->hasHelper();

中间件

将您的中间件文件放在 <module root>/src/Http/Middleware/ 文件夹中,然后使用以下方式注册:

// load one middleware
$module->hasMiddleware('sales.admin', \Sales\Http\Middleware\EnsureAdminHaveAccessToSales::class);

// load multiple middlewares
$module->hasMiddlewares([
  'sales.admin' => \Sales\Http\Middleware\EnsureAdminHaveAccessToSales::class,
  'sales.whitelist' => \Sales\Http\Middleware\OnlyWhitelistIpCanAccessSales::class,
]);

服务提供者

将您的服务提供者放在 <module root>/src/Providers 文件夹中,然后使用以下方式注册:

// load one service Provider
$module->hasServiceProvider(\Sales\Providers\PaymentServiceProvider::class);

// load multiple service providers
$module->hasServiceProviders([
  \Sales\Providers\PaymentServiceProvider::class,
  \Sales\Providers\EventServiceProvider::class,
]);

开发

运行 composer test 进行测试。