$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); } function bot(): ZM\Context\BotContext { if (\container()->has('bot.event')) { /** @var OneBotEvent $bot_event */ $bot_event = \container()->get('bot.event'); return new \ZM\Context\BotContext($bot_event->self['user_id'] ?? '', $bot_event->self['platform']); } return new \ZM\Context\BotContext('', ''); }