public function serialize($var) { if (is_int($var)) { return self::SER_INT . pack('N', $var); } else { if (is_array($var)) { $serialized = self::SER_ARRAY; $serialized .= pack('N', count($var)); foreach ($var as $key => $value) { $serialized .= $this->serialize($key); $serialized .= $this->serialize($value); } return $serialized; } else { if ($var === null) { return self::SER_NULL; } else { $var = (string) $var; $serialized = self::SER_STRING; $serialized .= pack('N', StrUtil::byteLength($var)); $serialized .= $var; return $serialized; } } } }