关于api目录

📁 插件系统:api 目录使用指南

在我们的插件架构中,api 目录是插件之间进行“对话”的桥梁。它负责定义并暴露插件的内部功能,以便其他插件可以轻松调用。

1. 核心定位 🔍

api 目录存放的是 内部函数调用接口

  • 用途:当你的插件需要提供一些功能(如发送邮件、校验权限、读取配置)给其他插件使用时,请将这些逻辑封装在 api 目录下。
  • 本质:它们是标准的 PHP 类和方法,直接通过代码调用。

2. 接口类型区分(划重点!) ⚠️

接口类型访问方式适用场景是否属于 api 目录
函数调用接口直接通过 PHP 类名/方法名调用插件间的内部通信、逻辑共享属于
网络调用接口通过 HTTP 请求(如 axios, curl)访问前端交互、外部系统对接不属于
注意:api 目录下的代码不能通过 URL 直接访问。

3. 实际开发示例 ✉️

💡 场景 A:邮件插件 (plugin/email)

如果你开发了一个邮件插件,希望别人能调用它发邮件:

  • 文件路径plugin/email/api/Email.php
  • 调用方式
// 其他插件只需一行代码即可发信
\plugin\email\api\Email::make()->send($to, $subject, $content);

💡 场景 B:配置管理 (plugin/xbCode)

系统内置的配置插件,提供了统一的读取接口:

  • 文件路径plugin/xbCode/api/ConfigApi.php
  • 调用方式
// 获取系统配置中的验证码状态
$state = \plugin\xbCode\api\ConfigApi::make('system')->get('captcha_state');

4. 特殊文件:Install.php ⚙️

在每个插件的 api 目录下,你通常会看到一个 Install.php 文件。

  • 它的身份:插件的“生命周期管理器”。
  • 它的作用:由系统自动生成,用于处理插件的 安装、卸载、更新 等操作(例如:在安装时自动创建数据库表)。
  • 注意:除非需要自定义安装逻辑,否则无需手动修改它。

5. 编写建议 📝

  • 单例/工厂模式:建议提供 make() 静态方法,方便链式调用。
  • 命名规范:类名应清晰反映其功能,如 UserApi.phpLogApi.php
  • 简洁性api 层应尽可能轻量,具体的业务逻辑建议实现在插件的 app/serviceapp/model 中。