codfee / plugins-system
Laravel 和 Lumen 插件系统
Requires
- php: >=5.5.9
This package is auto-updated.
Last update: 2024-09-08 05:01:56 UTC
README
适用于 Laravel 5.x 和 Lumen 5.x 的插件系统。插件可以相互覆盖和扩展。
用法
对于 Lumen,将其添加到 bootstrap/app.php 中:$app->register(\CodFee\LaravelPlugins\PluginServiceProvider::class);
对于 Laravel,将其添加到 config/app.php 中的 'providers' 数组:\CodFee\LaravelPlugins\PluginServiceProvider::class,
创建一个插件
结构
插件必须位于 app/Plugins 中。示例插件结构
- 测试
- Http
- 控制器
- TestController.php
- 控制器
- 视图
- test.blade.php
- 迁移
- 2018_06_15_000000_create_test_table.php
- routes.php
- TestPlugin.php
- Http
TestPlugin 类必须扩展 CodFee\LaravelPlugins\Plugin 类,包含一个唯一的 $name 属性和 boot() 方法。
视图
在你的插件 boot() 方法中调用 $this->enableViews()。可选地,你可以传递一个相对路径到视图目录,默认为 views。视图自动有一个命名空间("plugin:{name}"),名称由主插件类以驼峰格式定义,从末尾移除 Plugin。例如,对于上面的示例,它将是 plugin:test。要渲染视图,你可以自己编写命名空间,或者在插件类中使用辅助方法 view()。例如 view('plugin:test::some.view.name');
路由
在你的插件 boot() 方法中调用 $this->enableRoutes()。可选地,你可以传递一个相对路径到路由文件,默认为 routes.php。你自动有权访问 $app 变量。路由自动分组到你的插件命名空间,因此你只需输入控制器名称而不需要命名空间。
控制器
控制器必须位于 PluginDirectory->Http->Controllers。
迁移
在你的插件 boot() 方法中调用 $this->enableMigrations()。可选地,你可以传递一个相对路径到迁移目录,默认为 migrations。请注意,迁移必须遵循 yyyy_mm_dd_tttt_ 命名约定,例如 2014_10_12_000000_create_users_table.php 将是一个有效的迁移。
如何扩展另一个插件
待办事项
- 将插件目录和项目命名空间移动到可发布的配置文件