Psalm
Get started
Documentation
Paid support
Plugins
Blog
GitHub
<?php declare(strict_types = 1); /** @phpstan-template T */ class Collection { /** @var array<T> */ private array $array = []; /** @param T $item */ public function add(mixed $item): void { $this->array[] = $item; } /** @return T|null */ public function get(): mixed { return $this->array[0] ?? null; } public function count(): int { return count($this->array); } } class HelloWorld { /** * @template T * @param Collection<T> $collection */ public function compute(Collection $collection): int { $item = $collection->get(); if (null !== $item) { $collection->add($item); } return $collection->count(); } /** * @param Collection<int> $collection */ public function computeInt(Collection $collection): int { return $this->compute($collection); } /** * @param Collection<string> $collection */ public function computeString(Collection $collection): int { return $this->compute($collection); } }
Snippet created on June 20 2022 at 09:12 UTC
Settings
Get link