Laravel Plugin

介绍

Laravel Plugin 是为需要构建自己生态的开发者提供的插件机制解决方案,使用它您可以构建类似 wordpress 的生态。它能为您提供的帮助如下:

  • 基于服务注册的方式去加载插件。
  • 通过命令行的方式,插件开发者可以方便快捷的构建插件,上传插件到插件市场。
  • 提供插件 composer 包支持。在创建的插件中单独引用 composer。
  • 以事件监听的方式,执行插件安装,卸载,启用,禁用的逻辑。方便开发者进行拓展。
  • 插槽式的插件市场支持,通过修改配置文件,开发者可以无缝对接到自己的插件市场。
  • 自带一个基本的插件市场,开发者可以上传插件,并对插件进行审核。
  • 支持插件多版本。

环境依赖

  • php 7.4 以上版本
  • laravel 6.0 以上版本

安装

  • 第一步
composer require yxx/laravel-plugin
1
  • 第二步
php artisan vendor:publish --provider="Yxx\LaravelPlugin\Providers\PluginServiceProvider"
1

命令行

查看所有可用指令

php artisan plugin
1

创建插件

默认会在 plugins 目录下创建一个名为 demo 的插件,通过 你的域名 + /demo 现在就可以访问你创建插件的路由了。

php artisan plugin:make demo
1

创建 provider

创建一个 TestServiceProvider 到 demo 插件

php artisan plugin:make-provider  TestServiceProvider demo
1

创建控制器

创建一个 TestController 到 demo 插件

php artisan plugin:make-controller  Test demo
1

创建 model

创建一个 TestController 到 demo 插件

php artisan plugin:make-model Test demo
1

创建 migration

创建数据库表 tests 到 demo

php artisan plugin:make-migration create_tests_table demo
1

执行数据迁移

单独执行 demo 插件的数据迁移

php artisan plugin:migrate demo
1

所有插件进行数据迁移

php artisan plugin:migrate 
1

插件安装 composer

在 demo 插件生产环境安装 composer 包

php artisan plugin:composer-require demo spatie/data-transfer-object  
1

在 demo 插件 dev 环境安装 composer 包

php artisan plugin:composer-require demo spatie/data-transfer-object --dev
1

在 demo 插件安装指定版本的 composer 包

php artisan plugin:composer-require demo spatie/data-transfer-object --dev --v=3.6.0
1

插件卸载 composer

在 demo 插件卸载 composer 包 spatie/data-transfer-object

php artisan plugin:composer-remove demo spatie/data-transfer-object
1

查看已经安装的插件

php artisan plugin:list
1

启用插件

php artisan plugin:enable demo
1

停用插件

php artisan plugin:disable demo
1

安装插件

/Users/Desktop/c516f6b8-e829-4743-bdb9-0098a1c29fec.zip 就是你当前插件的本地路径

php artisan plugin:install /Users/Desktop/c516f6b8-e829-4743-bdb9-0098a1c29fec.zip
1

删除插件

会移除当前插件相关的 composer 包,如果主程序或者其他插件也用到了这个 composer 包则不会移除。

php artisan plugin:delete demo
1

静态资源

静态资源发布后将资源文件发布到 public/plugins/demo 目录下面

php artisan plugin:publish demo
1

注册

开发者可以注册一个账号,以便可以将插件上传到插件市场,也可以在插件市场下载插件

php artisan plugin:register
1

开发者登录

php artisan plugin:login
1

上传插件

将 demo 插件上传到插件市场

php artisan plugin:upload demo
1

开发者可以登录插件市场看到自己上传的插件 file

远程下载插件并安装

请按提示安装对应的插件以及版本

php artisan plugin:download 
1

事件

config/plugins 中,可以配置你自己的监听器,比如在插件安装以后,我们默认了 PluginPublishPluginMigrate 两个监听器去执行插件安装之后的数据迁移和资源发布。

    // 事件监听
    'listen' => [
        // 插件安装以后
        'plugins.installed' => [
            \Yxx\LaravelPlugin\Listeners\PluginPublish::class,
            \Yxx\LaravelPlugin\Listeners\PluginMigrate::class,
        ],
        // 插件禁用之前
        'plugins.disabling' => [],

        // 插件禁用之后
        'plugins.disabled' => [],

        // 插件启用之前
        'plugins.enabling' => [],

        // 插件启用之后
        'plugins.enabled' => [],

        // 插件删除之前
        'plugins.deleting' => [],

        // 插件删除之后
        'plugins.deleted' => [],
    ],
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

自定义插件市场

config/plugins 可以配置我们的插件市场,默认的配置如下

    // 插件市场
    'market' => [
        // 插件市场 api 域名
        'api_base' => 'http://plugin.you-tang.com/',
        // 插件市场默认调用的 client class
        'default' => \Yxx\LaravelPlugin\Support\Client\Market::class
    ],
1
2
3
4
5
6
7

\Yxx\LaravelPlugin\Support\Client\Market::class 默认调用的已经写好的插件市场 Api,如果你想调用自己的 Api,只需要实现 Yxx\LaravelPlugin\Contracts\ClientInterface 接口即可。

交流讨论

  • 微信群

file

联系我

file

Last Updated:
Contributors: youyingxiang