Есть два основных аргумента в его пользу:
- mixed сигнализирует о том, что тип не забыли указать, просто он не может быть уточнён,
- mixed часто фигурирует в документации PHP.
Смешанный тип эквивалентен объединению типов
null|bool|int|float|string|array|object|callable|resource. При наследовании mixed по общему правилу может использоваться в следующих ситуациях:abstract class AТип
{
abstract public function bar(string $arg): mixed;
}
final class B extends A
{
/**
* тип аргумента расширен в подклассе
* тип возвращаемого значения сужен в подклассе
*/
public function bar(mixed $arg): int
{...}
}
?mixed считается невалидным и избыточным: mixed по определению включает null. Код с таким типом сгенерирует фатальную ошибку.О других нюансах использования смешанного типа читайте в RFC: https://wiki.php.net/rfc/mixed_type_v2.
@vudaltsov | https://twitter.com/vudaltsov