offsetGet($key); } return $default; } /** * 判断是否存在临时数据 * @param string $key * @return bool */ public static function hasData(string $key) { return self::getDataObject()->offsetExists($key); } /** * 写入临时数据 * @param string $key * @param $value */ public static function setData(string $key, $value) { self::getDataObject()->offsetSet($key, $value); } /** * 删除数据 * @param string $key */ public static function removeData(string $key) { if (self::hasData($key)) { self::getDataObject()->offsetUnset($key); } } /** * 如果不存在则写入数据 * @param string $key * @param $value * @return mixed|null */ public static function rememberData(string $key, $value) { if (self::hasData($key)) { return self::getData($key); } if ($value instanceof Closure) { // 获取缓存数据 $value = $value(); } self::setData($key, $value); return $value; } /** * @internal * 清空数据 */ public static function clear() { self::getDataObject()->exchangeArray([]); } /** * 获取当前协程ID * @return mixed */ public static function getCoroutineId() { return Coroutine::getuid(); } }