Psalm
Get started
Documentation
Plugins
Articles
GitHub
<?php /** @template T */ interface Query {} interface QueryBus { /** * @template T * @param Query<T> $query * @return T */ public function __invoke(Query $query); } final class Number { private int $value; public function __construct(int $value) { $this->value = $value; } public function value(): int { return $this->value; } } /** @implements Query<Number> */ final class GetNumber implements Query { } final class GetNumberHandler { public function __invoke(GetNumber $query): Number { return new Number(13); } } function f(QueryBus $bus): void { $number = $bus(new GetNumber()); echo $number->value() . PHP_EOL; }
Snippet created on April 23 2021 at 14:52 UTC
Settings
Get link