add coroutine for container

This commit is contained in:
crazywhalecc
2022-12-30 11:30:29 +08:00
parent 8473a1152d
commit 96fa6b105c

View File

@@ -7,22 +7,26 @@ namespace ZM\Container;
use DI; use DI;
use DI\Container; use DI\Container;
use DI\ContainerBuilder; use DI\ContainerBuilder;
use OneBot\Driver\Coroutine\Adaptive;
class ContainerHolder class ContainerHolder
{ {
private static ?Container $container = null; /** @var Container[] */
private static array $container = [];
public static function getEventContainer(): Container public static function getEventContainer(): Container
{ {
if (self::$container === null) { $cid = Adaptive::getCoroutine()?->getCid() ?? -1;
self::$container = self::buildContainer(); if (!isset(self::$container[$cid])) {
self::$container[$cid] = self::buildContainer();
} }
return self::$container; return self::$container[$cid];
} }
public static function clearEventContainer(): void public static function clearEventContainer(): void
{ {
self::$container = null; $cid = Adaptive::getCoroutine()?->getCid() ?? -1;
unset(self::$container[$cid]);
} }
private static function buildContainer(): Container private static function buildContainer(): Container