给 AI 的硬性规则:
- 目标为 PHP 8.1、SQLite3、无 Composer 安装步骤;依赖必须打包进插件。
- 从
examples/plugins/hello-shopagg复制目录结构。 plugin.json必须通过Documents/plugin.schema.json和php shopagg plugin:validate <dir>。- 插件 ID 使用
^[a-z0-9]+(?:-[a-z0-9]+)*$,版本使用完整 SemVer。 - 所有类使用插件自己的 PSR-4 命名空间,处理器写
Class@method。 - 不编辑
app/、themes/、index.php或核心迁移;数据表只能通过PluginSchema创建。 - 路由处理器接收
Request, PluginContext, ...路径参数,返回Response|array|string。 - 页面修改使用 Filter/Slot;业务通知使用 Event;耗时操作使用
ChunkedJobInterface。 - 会员、订单、支付、积分、通知等组合能力使用
App\Plugins\Contracts,通过provides_services/requires_services声明接口版本,不要自创不兼容的共享用户体系。 - 后台写路由声明
admin、permission:plugin.{id}.{permission}、csrf。 - 插件升级新增数据结构时新增迁移文件,永远不要修改已发布迁移。
- 输出前执行:
php shopagg plugin:test <dir>、php shopagg plugin:pack <dir>。 - 在
form.before_validate中需要阻止核心表单写入时,抛出App\Plugins\Exceptions\FormValidationException;不要在其他 Filter 或 Event 中用exit中断请求。
常用对象:
$plugin->database()/schema()/settings()/session()$plugin->events()/filters()/slots()/services()$plugin->jobs()/httpClient()/logger()$plugin->views()/assets()/media()/uploads()$plugin->products()/posts()/categories()/inquiries()/messages()
完整说明:Documents/插件开发指南.md。