get('ctx'); } /** * 构建消息段的助手函数 * * @param string $type 类型 * @param array $data 字段 */ function segment(string $type, array $data = []): MessageSegment { return new MessageSegment($type, $data); } /** * 中间件操作类的助手函数 */ function middleware(): MiddlewareHandler { return MiddlewareHandler::getInstance(); } // ////////////////// 容器部分 ////////////////////// /** * 获取容器(请求级)实例 */ function container(): ContainerInterface { return Container::getInstance(); } /** * 解析类实例(使用容器) * * @template T * @param class-string $abstract * @return Closure|mixed|T * @noinspection PhpDocMissingThrowsInspection */ function resolve(string $abstract, array $parameters = []) { /* @noinspection PhpUnhandledExceptionInspection */ return Container::getInstance()->make($abstract, $parameters); } /** * 获取容器实例 * * @template T * @param null|class-string $abstract * @return Closure|ContainerInterface|mixed|T */ function app(string $abstract = null, array $parameters = []) { if (is_null($abstract)) { return container(); } return resolve($abstract, $parameters); } /** * 获取 MySQL 调用的类 * * @throws DBException */ function db(string $name = '') { return new DBWrapper($name); } /** * 获取构建 MySQL 的类 * * @throws DBException */ function sql_builder(string $name = '') { return (new DBWrapper($name))->createQueryBuilder(); } /** * 获取 / 设置配置项 * * 传入键名和(或)默认值,获取配置项 * 传入数组,设置配置项 * 不传参数,返回配置容器 * * @param null|array|string $key 键名 * @param null|mixed $default 默认值 * @return mixed|void|ZMConfig */ function config(array|string $key = null, mixed $default = null) { $config = ZMConfig::getInstance(); if (is_null($key)) { return $config; } if (is_array($key)) { $config->set($key); return; } return $config->get($key, $default); }