code: private function pack($data): string
      {
          $flag = $this->flagChoice(gettype($data));
          if ($flag & self::DATA_OBJECT) {
              $data = serialize($data);
          } elseif ($flag & self::DATA_ARRAY) {
              $data = json_encode($data);
          }
          $size = strlen($data);
          if ($size > self::PACKET_MAX_SIZE_WITH_HEADER) {
              throw new SendException('Large size of data to send! Please break it into your code.');
          }
          $format = 'CNa*';
          if ($size <= self::SHORT_PACKET_SIZE) {
              $format = 'CCa*';
              $flag |= self::SHORT_PACKET;
          }
          return pack($format, $flag, $size - 1, $data);
      }
docs: Пакует данные в пакеты, и возвращает массив пакетов,
  которые можно отправлять в любом порядке.
  
  @param $data
  
  @return string
  @throws SendException