2023-03-10 22:13:36 +08:00

58 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 内置依赖项
在不同的事件(或周期中),可用的依赖项可能会有所不同。例如,当你在一个命令方法中可以使用 `BotContext` 依赖,但在一个路由方法中却不能使用。
你也可以选择直接查看 `src/ZM/Container/ContainerRegistrant.php` 文件,大部分依赖都在该处定义。
GitHub 链接https://github.com/zhamao-robot/zhamao-framework/blob/main/src/ZM/Container/ContainerRegistrant.php
本页面列出在不同事件中可用的依赖项。
## 全局依赖
在任何事件(或任何支持依赖注入的地方)中,你都可以使用以下依赖项:
- `Psr\Log\LoggerInterface`:日志记录器(可使用类的别名 `LoggerInterface`
- `Psr\Container\ContainerInterface`:容器(可使用别名 `ContainerInterface`
- `DI\Container`:容器,区别在于可以使用 `set` 方法来动态设置依赖项,与 `container` 函数返回的实例相同
- `ZM\Config\ZMConfig`:配置,与 `config` 函数返回的实例相同(可使用别名 `ZMConfig`
- ...
## OneBot 事件
在 OneBot 事件(`@BotEvent`)中,你可以使用以下依赖项:
- `OneBot\V12\Object\OneBotEvent`:当前事件的实例(可使用别名 `OneBotEvent`
- `ZM\Context\BotContext`:当前事件的上下文,可使用别名 `BotContext`,部分事件可能不可用(要求传入的事件存在 `platform` 字段)
## OneBot 动作响应
在 OneBot 动作响应(`@BotActionResponse`)中,你可以使用以下依赖项:
- `OneBot\V12\Object\ActionResponse`:当前动作响应的实例(可使用别名 `ActionResponse`
## HTTP 请求事件(路由事件)
在 HTTP 请求事件(`@Route`)中,你可以使用以下依赖项:
- `OneBot\Driver\Event\Http\HttpRequestEvent`:当前事件的实例(可使用别名 `HttpRequestEvent`
- `Psr\Http\Message\ServerRequestInterface`:当前请求的实例(可使用别名 `ServerRequestInterface`
## WebSocket 连接事件
在 WebSocket 连接事件(`@BindEvent(WebSocketOpenEvent::class)`)中,你可以使用以下依赖项:
- `OneBot\Driver\Event\WebSocket\WebSocketOpenEvent`:当前事件的实例(可使用别名 `WebSocketOpenEvent`
## WebSocket 消息事件
在 WebSocket 消息事件(`@BindEvent(WebSocketMessageEvent::class)`)中,你可以使用以下依赖项:
- `OneBot\Driver\Event\WebSocket\WebSocketMessageEvent`:当前事件的实例(可使用别名 `WebSocketMessageEvent`
- `Choir\WebSocket\FrameInterface`:当前消息(帧)的实例(可使用别名 `FrameInterface`
## WebSocket 关闭事件
在 WebSocket 关闭事件(`@BindEvent(WebSocketCloseEvent::class)`)中,你可以使用以下依赖项:
- `OneBot\Driver\Event\WebSocket\WebSocketCloseEvent`:当前事件的实例(可使用别名 `WebSocketCloseEvent`