code: private function unpack(string $raw, int $flag)
      {
          $data = null;
          if ($flag & self::DATA_STRING) {
              $data = $raw;
          } elseif ($flag & self::DATA_INT) {
              $data = (int)$raw;
          } elseif ($flag & self::DATA_FLOAT) {
              $data = (float)$raw;
          } elseif ($flag & self::DATA_ARRAY) {
              $data = json_decode($raw, JSON_OBJECT_AS_ARRAY);
          } elseif ($flag & self::DATA_OBJECT) {
              $data = unserialize($raw);
          } else {
              throw new \InvalidArgumentException('Invalid data type.');
          }
          return $data;
      }
docs: Распаковывает принятые из сокета данные.
  Возвращает null если данные не были распакованы по неизвестным причинам.
  
  @param string $raw
  @param int $flag
  
  @return mixed
  @throws \InvalidArgumentException