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

v1.0.3(1w ago)012↓93.3%2MITPHPPHP ^8.2

Since Dec 10Pushed 6mo 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 today

READMEChangelogDependencies (4)Versions (13)Used By (2)

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 插件系统框架，支持插件自动发现、Manifest 缓存、生命周期管理和声明式资源发布。

✨ 主要特性
------

[](#-主要特性)

- 🔌 **插件自动发现** — 配置文件、Composer 包、本地包三级来源
- ⚡ **Manifest 缓存** — 发现结果缓存到 `bootstrap/cache/plugins.php`，生产环境零文件扫描
- 🔄 **标准生命周期** — `register()` → `boot()` → `registerRoutes()` 严格分离
- 📦 **声明式发布** — 基于 Laravel 原生 `publishes()` + `vendor:publish`，不再自动覆盖文件
- 🎯 **延迟加载** — 构造函数零 I/O，所有属性按需初始化
- 🔔 **生命周期事件** — `PluginRegistered` / `PluginBooted` 事件，支持插件间松耦合通信
- 🛣️ **路由缓存兼容** — 自动尊重 `route:cache`，不重复加载路由
- ✅ **启用/禁用控制** — 通过配置文件控制每个插件的启用状态
- 💻 **Artisan 命令** — `plugin:list` / `plugin:publish` / `plugin:cache` / `plugin:clear`

📋 目录
----

[](#-目录)

- [安装](#%E5%AE%89%E8%A3%85)
- [快速开始](#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B)
- [创建插件](#%E5%88%9B%E5%BB%BA%E6%8F%92%E4%BB%B6)
- [插件发现与缓存](#%E6%8F%92%E4%BB%B6%E5%8F%91%E7%8E%B0%E4%B8%8E%E7%BC%93%E5%AD%98)
- [插件生命周期](#%E6%8F%92%E4%BB%B6%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F)
- [资源发布](#%E8%B5%84%E6%BA%90%E5%8F%91%E5%B8%83)
- [配置参考](#%E9%85%8D%E7%BD%AE%E5%8F%82%E8%80%83)
- [API 参考](#api-%E5%8F%82%E8%80%83)
- [Artisan 命令](#artisan-%E5%91%BD%E4%BB%A4)
- [常见问题](#%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 require siaoynli/laravel-plugins
```

Laravel 11 的包自动发现会自动注册 `PluginServiceProvider`，无需手动配置。

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

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

```
php artisan vendor:publish --tag=laravel-plugins-config
```

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

### 构建缓存（推荐）

[](#构建缓存推荐)

```
php artisan plugin:cache
```

生产环境构建缓存后，后续请求不再扫描文件系统。

🚀 快速开始
------

[](#-快速开始)

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

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

```
php artisan plugin:list
```

输出示例：

```
1 plugin(s) loaded:

┌──────────────────────────┬──────────────┬─────────┬─────────┐
│ Package                  │ Name         │ Version │ Enabled │
├──────────────────────────┼──────────────┼─────────┼─────────┤
│ siaoynli/phone-auth      │ 手机验证码登录 │ 1.0.8   │ ✓       │
└──────────────────────────┴──────────────┴─────────┴─────────┘

```

### 2. 发布插件资源

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

```
# 查看可用的发布标签
php artisan plugin:publish

# 使用 Laravel 原生命令发布
php artisan vendor:publish --tag=siaoynli-phone-auth-plugin-config
php artisan vendor:publish --tag=siaoynli-phone-auth-plugin-migrations
php artisan vendor:publish --tag=siaoynli-phone-auth-plugin-views
php artisan vendor:publish --tag=siaoynli-phone-auth-plugin-assets
```

📝 创建插件
------

[](#-创建插件)

### 步骤 1: 创建目录结构

[](#步骤-1-创建目录结构)

```
packages/my-vendor/my-plugin/
├── composer.json
├── config/
│   └── plugin.php              # 插件配置（可选）
├── src/
│   ├── MyPluginPlugin.php       # 插件主类
│   └── Providers/               # 服务提供者（可选，自动发现）
├── routes/
│   └── api.php                  # 路由文件（可选）
├── database/
│   └── migrations/              # 迁移文件（可选）
└── resources/
    ├── views/                   # 视图文件（可选）
    └── assets/                  # 静态资源（可选）

```

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

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

```
{
    "name": "my-vendor/my-plugin",
    "description": "My awesome plugin",
    "version": "1.0.0",
    "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\\MyPluginPlugin"
        }
    }
}
```

> `extra.plugin.class` 告诉插件系统哪个类是插件入口。如果不配置，系统会尝试根据 PSR-4 命名空间自动推断。

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

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

```
