Psalm
Get started
Documentation
Paid support
Plugins
Blog
GitHub
<?php /** * @psalm-immutable * @template T */ interface I { } /** * @psalm-immutable * @template T * @extends I<T> */ interface ExtendedI extends I { } /** * @psalm-immutable * @template T * @implements ExtendedI<T|null> */ final class IntWithNull implements ExtendedI { /** * @param T $_value */ public function __construct($_value) { } } /** * @psalm-immutable * @template T * @implements ExtendedI<null|T> */ final class NullWithInt implements ExtendedI { /** * @param T $_value */ public function __construct($_value) { } } /** * @param I<null|int> $_type */ function test(I $_type): void { } test(new IntWithNull(1)); test(new NullWithInt(1));
Snippet created on June 2 2023 at 14:48 UTC
Settings
Get link