zonneplan / laravel-module-loader
Laravel 的模块加载器
v5.0.0
2024-03-18 12:05 UTC
Requires
- php: ^8.2
- illuminate/console: ^11.0
- illuminate/database: ^11.0
- illuminate/routing: ^11.0
- illuminate/support: ^11.0
Requires (Dev)
- mockery/mockery: ^1.4
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^10.0||^11.0
README
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