PHPackages                             siaoynli/laravel-plugins - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. siaoynli/laravel-plugins

ActiveLibrary[Framework](/categories/framework)

siaoynli/laravel-plugins
========================

A powerful plugin system framework for Laravel 11

0.0.8(5mo ago)05↓50%MITPHPPHP ^8.2

Since Dec 10Pushed 5mo agoCompare

[ Source](https://github.com/siaoynli/laravel-plugins)[ Packagist](https://packagist.org/packages/siaoynli/laravel-plugins)[ RSS](/packages/siaoynli-laravel-plugins/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (9)Used By (0)

Laravel Plugins
===============

[](#laravel-plugins)

[![License: MIT](https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667)](https://opensource.org/licenses/MIT)[![Laravel 11.0+](https://camo.githubusercontent.com/4b246727715ad1c1d7a33193413f664ff6a0f7de40853dc7b45018cedd495f5e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31312e302532422d7265642e737667)](https://laravel.com)[![PHP 8.2+](https://camo.githubusercontent.com/0f16581d1180dbfd4c0e13166ec1267d4ad2f2fab8281ea6d6b284cf5c65d921/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d626c75652e737667)](https://www.php.net)

一个强大而灵活的 Laravel 11 插件系统框架，支持插件的自动发现、注册、路由和资源发布。

✨ 主要特性
------

[](#-主要特性)

- 🔌 **完整的插件系统** - 定义、加载、注册、启动、路由和资源发布
- 🚀 **自动发现机制** - 支持三个来源的插件自动发现
- 📦 **三级优先级加载** - 配置文件、Composer 包、本地包
- 🛣️ **自动路由注册** - 插件路由自动注册和中间件配置
- 📁 **资源发布系统** - 支持迁移、配置、视图和资源文件发布
- ⚙️ **灵活的配置管理** - 每个插件独立配置启用状态和行为
- 📝 **详细的日志记录** - 完整的操作日志便于调试
- ✅ **插件启用/禁用控制** - 轻松启用或禁用任何插件
- 💻 **Artisan 命令行工具** - 两个强大的命令管理插件
- 📚 **完整的文档系统** - 详细的使用指南和 API 参考

📋 目录
----

[](#-目录)

- [安装](#%E5%AE%89%E8%A3%85)
- [快速开始](#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B)
- [功能说明](#%E5%8A%9F%E8%83%BD%E8%AF%B4%E6%98%8E)
- [使用指南](#%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97)
- [API 参考](#api-%E5%8F%82%E8%80%83)
- [常见问题](#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)
- [许可证](#%E8%AE%B8%E5%8F%AF%E8%AF%81)

📦 安装
----

[](#-安装)

### 前置要求

[](#前置要求)

- PHP &gt;= 8.2
- Laravel &gt;= 11.0
- Composer

### 安装步骤

[](#安装步骤)

使用 Composer 安装：

```
composer require siaoynli/laravel-plugins
```

### 自动注册（Laravel 11）

[](#自动注册laravel-11)

Laravel 11 支持自动包发现，`PluginServiceProvider` 会自动注册到应用中。

如果需要手动注册，在 `config/app.php` 的 `providers` 数组中添加：

```
'providers' => [
    // ...
    Siaoynli\Plugins\Providers\PluginServiceProvider::class,
],
```

### 发布配置文件（可选）

[](#发布配置文件可选)

```
php artisan vendor:publish --provider="Siaoynli\Plugins\Providers\PluginServiceProvider"
```

这会在 `config/` 目录下生成 `app-plugins.php` 配置文件。

🚀 快速开始
------

[](#-快速开始)

### 1. 查看已加载的插件

[](#1-查看已加载的插件)

```
php artisan plugin:list
```

输出示例：

```
✅ 1 plugin(s) loaded:

┌────────────────────────┬──────────────┬─────────┬──────────────────┬─────────┬──────────────┐
│ Package                │ Display Name │ Version │ Description      │ Enabled │ Route Prefix │
├────────────────────────┼──────────────┼─────────┼──────────────────┼─────────┼──────────────┤
│ my-vendor/my-plugin    │ My Plugin    │ 1.0.0   │ This is my..      │ ✓       │ my-plugin    │
└────────────────────────┴──────────────┴─────────┴──────────────────┴─────────┴──────────────┘

Summary:
  • Total plugins: 1
  • Enabled: 1
  • Disabled: 0

```

### 2. 发布插件资源

[](#2-发布插件资源)

```
# 发布所有插件的资源
php artisan plugin:publish

# 发布特定插件的资源
php artisan plugin:publish vendor/my-plugin
```

### 3. 创建您的第一个插件

[](#3-创建您的第一个插件)

#### 步骤 1: 创建插件目录

[](#步骤-1-创建插件目录)

```
mkdir -p packages/my-vendor/my-plugin
cd packages/my-vendor/my-plugin
```

#### 步骤 2: 创建 composer.json

[](#步骤-2-创建-composerjson)

```
{
  "name": "my-vendor/my-plugin",
  "description": "My first awesome plugin",
  "type": "library",
  "require": {
    "php": "^8.2",
    "laravel/framework": "^11.0",
    "siaoynli/laravel-plugins": "^1.0"
  },
  "autoload": {
    "psr-4": {
      "MyVendor\\MyPlugin\\": "src/"
    }
  },
  "extra": {
    "plugin": {
      "class": "MyVendor\\MyPlugin\\MyPlugin"
    }
  }
}
```

#### 步骤 3: 创建插件主类

[](#步骤-3-创建插件主类)

创建 `src/MyPlugin.php`：

```
