codfee/plugins-system

Laravel 和 Lumen 插件系统

dev-master 2019-05-24 06:47 UTC

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

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_.php 命名约定,例如 2014_10_12_000000_create_users_table.php 将是一个有效的迁移。

如何扩展另一个插件

待办事项

  • 将插件目录和项目命名空间移动到可发布的配置文件

plugins-system