Skip to content

Add Encoder generics - #27

Merged
kafkiansky merged 1 commit into
0.2.xfrom
encoder-generics
Aug 8, 2026
Merged

Add Encoder generics#27
kafkiansky merged 1 commit into
0.2.xfrom
encoder-generics

Conversation

@kafkiansky

@kafkiansky kafkiansky commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Generics will allow writing encoders with a more specific type than object. For example, this makes it possible to implement a RawMessageEncoder that enables using a protobuf serializer other than thesis/protobuf (e.g google/protobuf).

/**
 * @api
 */
final readonly class RawMessage
{
    public function __construct(
        public string $payload,
    ) {}
}

/**
 * @template-implements Encoder<RawMessage>
 */
final readonly class RawMessageEncoder implements Encoder
{
	#[\Override]
    public function name(): string
	{
		return 'proto';
	}

    #[\Override]
    public function encode(object $request): string
	{
		return $request->payload;
	}

    #[\Override]
    public function decode(string $buffer, string $classType): object
	{
		return new $classType($buffer);
	}
}

@kafkiansky kafkiansky self-assigned this Aug 8, 2026
@kafkiansky kafkiansky added the enhancement New feature or request label Aug 8, 2026
@kafkiansky
kafkiansky merged commit 9b3cf34 into 0.2.x Aug 8, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant