Error Identifier: unionType.mixed
Every error reported by PHPStan has an error identifier. Here’s a list of all error identifiers. In PHPStan Pro you can see the error identifier next to each error and filter errors by their identifiers.
Code example #
<?php declare(strict_types = 1);
function doFoo(mixed|string $value): void
{
}
Why is it reported? #
The mixed type cannot be part of a union type declaration in PHP. The mixed type already represents all possible types (int|string|float|bool|array|object|null|resource|callable), so combining it with other types in a union is redundant and not allowed by the PHP language. This is a compile-time error in PHP 8.0 and later.
The same applies to ?mixed (nullable mixed), because mixed already includes null.
How to fix it #
If the intention is to accept any type, use mixed alone:
<?php declare(strict_types = 1);
-function doFoo(mixed|string $value): void
+function doFoo(mixed $value): void
{
}
If the intention is to accept only specific types, list them explicitly without mixed:
<?php declare(strict_types = 1);
-function doFoo(mixed|string $value): void
+function doFoo(string|int $value): void
{
}
For nullable mixed, remove the ? since mixed already includes null:
<?php declare(strict_types = 1);
-function doFoo(?mixed $value): void
+function doFoo(mixed $value): void
{
}
Non-ignorable error #
This error cannot be ignored using @phpstan-ignore or the ignoreErrors configuration. Non-ignorable errors indicate code that would cause a crash or a fatal error at runtime, or a fundamental problem in the analysed code that must be addressed.
Rules that report this error #
- PHPStan\Rules\Types\InvalidTypesInUnionRule [1]