zonneplan/laravel-module-loader

Laravel 的模块加载器

v5.0.0 2024-03-18 12:05 UTC

This package is auto-updated.

Last update: 2024-09-18 13:14:52 UTC


README

Latest Version on Packagist MIT Licensed Build Status Total Downloads

zonneplan/laravel-module-loader 包提供了一种易于使用的模块加载器,可用于模块化您的项目。

如何使用

首先安装包,请参阅安装部分。

创建新模块

  • 创建一个文件夹,例如:在应用目录下创建名为 Modules 的文件夹。
  • 之后,创建另一个文件夹,例如:User
  • 在该文件夹的根目录下插入一个 UserServiceProvider,它扩展了我们的抽象 Module 类。
  • 实现函数 getModuleNamespace() 如下:
namespace Modules\User;

use Zonneplan/ModuleLoader/Module;

class UserServiceProvider extends Module
{
    public function getModuleNamespace(): string
    {
        return 'user';
    }
}
  • config/app.php 文件中注册 UserServiceProvider
'providers' => [
    Modules\User\UserServiceProvider::class
]

模块内的结构

预期的结构如下。大部分是可选的。

app
├── Modules
    ├──MyModule
       ├──Config
       ├──Console
       ├──Database
          ├──Factories
          ├──Migrations
       ├──Exceptions
       ├──Http
          ├──Controllers
          ├──Middleware
          ├──Requests
          ├──Resources
       ├──Resources
          ├──lang
          ├──views
       ├──Routes
          ├──web.php            
          ├──api.php            
          ├──channels.php       
          ├──console.php        
       ├──MyModuleServiceProvider.php
       ├──tests

从模块访问视图

从模块访问视图的格式为 'my-module::path.to.view'

例如

// In a controller
view('user::index');

// In a blade file
@include('user::index');
@include('user::partials.form');

注册策略

要注册策略,请覆盖模块的 ServiceProvider 中的 $policies 变量。

例如

protected $policies = [
    MyModel::class => MyModelPolicy::class,
];

注册中间件

要注册中间件,请覆盖模块的 ServiceProvider 中的 $middleware 变量。

例如

protected $middleware = [
    'my-middleware' => MyMiddleware::class,
];

注册事件和监听器

要注册事件和监听器,请覆盖模块的 ServiceProvider 中的 $listen 变量。

例如

protected $listen = [
    MyEvent::class => [
        MyListener::class
    ],
];

注册事件订阅者

要注册事件订阅者,请覆盖模块的 ServiceProvider 中的 $subscribe 变量。

例如

protected $subscribe = [
    MySubscriber::class
];

注册路由

默认情况下,所有模块都会尝试加载 Routes 文件夹中的所有路由文件。以下任何文件都将自动加载:

routes.php api.php web.php

要求

此包需要至少 Laravel 6 或更高版本,PHP 7.2 或更高版本。

安装

composer require zonneplan/laravel-module-loader

包将自动注册自己。

composer.json 中注册命名空间:"Modules\\": "app/Modules",如下所示:

 "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Modules\\": "app/Modules"
        },
        ...

作者

  • Aron Rotteveel
  • Dennis Stolmeijer
  • Wout Hoeve
  • Johnny Borg
  • Rick Gout
  • Thijs Nijholt