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 NullableWithUnion implements ExtendedI { /** * @param T $_value */ public function __construct($_value) { } } /** * @psalm-immutable * @template T * @implements ExtendedI<?T> */ final class NullableWithQuestionMark implements ExtendedI { /** * @param T $_value */ public function __construct($_value) { } } /** * @param I<?int> $_type */ function test(I $_type): void { } test(new NullableWithUnion(1)); test(new NullableWithQuestionMark(1));
Snippet created on October 8 2022 at 01:52 UTC
Settings
Get link