# 内置依赖项
在不同的事件(或周期中),可用的依赖项可能会有所不同。例如,当你在一个命令方法中可以使用 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
)