source = $source; } /** * Encode current source * * @return string */ public function encode(): string { return implode('', [ CommentExtension::MARKER, CommentExtension::LABEL, $this->encodeComments(), CommentExtension::TERMINATOR, ]); } /** * Encode comment blocks * * @return string */ protected function encodeComments(): string { return implode('', array_map(function ($comment) { return pack('C', strlen($comment)) . $comment; }, $this->source->getComments())); } }