# 插件机制

# 原理说明

BeikeShop插件充分利用 Laravel 框架 ServiceProvider 发现以及引导机制, 将系统各个插件注册到系统。 包括插件的 Migrations, Routes, Views, Lang, 以及启动文件 Bootstrap.php。

插件PHP代码需要遵循 PSR4自动加载规范

简单来说,目录名和类名需要采用首字母大写驼峰也就是Studly原则, 如图所示

img.png

# 目录说明

一个典型的插件目录如下

  • Controllers
  • Lang
  • Middleware
  • Migrations
  • Models
  • Repositories
  • Routes
  • Static
  • Views
  • Bootstrap.php
  • columns.php
  • config.json
目录名称 说明
Controllers 控制器目录,前台和后台控制器都放到此目录,可以有子目录,只要符合 PSR4 规范即可
Lang 语言包目录,子目录的名字需要和 /resources/lang 目录下保持一致
Middleware 中间件目录,子目录 /Shop 存放前台中间件, 子目录 /Admin 存放后台中间件, 系统会自动加载
Migrations 数据库迁移目录,可参考 https://laravel.com/docs/9.x/migrations
Models 模型目录,插件模型,定义模型数据表以及表间关系
Repositories 数据仓库目录,DB存取相关类
Routes 路由目录,插件自定义路由。admin.php 存放管理后台路由, shop.php 存放前台路由
Static 存放静态文件,比如图片,可以放到 image 目录,可以在对应插件模板文件用 helper plugin_resize(插件编码, '/image/xx.png') 引用
Views 插件模板目录,包括前后台 blade.php 模板文件
Bootstrap.php 插件启动类需要实现一个 boot 公共方法: public function boot(), 再在该方法中添加 hook
columns.php 插件配置,此文件存放插件需要的配置字段,后台插件编辑页会自动显示。如果需要自定义配置页面,请在插件下添加 /Views/admin/config.blade.php 模板文件
config.json 插件基本信息,包括编码,名称,描述,类型,图标,作者等信息