PHP использует псевдотипы
callable и iterable для удобной валидации данных, но они не являются полноценными типами, как string или array.Callable появился в PHP 5.4 и объединяет замыкания, строки и массивы, ссылающиеся на функции. Он удобен, но создаёт сложности при статическом анализе, так как строка может содержать несуществующую функцию.
Iterable, введённый в PHP 7.1, проверяет, является ли значение массивом или реализует интерфейс
Traversable. В PHP 8.2 он перестал быть псевдотипом и теперь представляет собой объединение двух типов. Его использование может вызвать ошибки, если, например, массив заменяется генератором, что делает невозможным прямой доступ по индексу.Псевдотипы удобны, но их использование может затруднить анализ кода и привести к неожиданным ошибкам. Вместо
callable лучше использовать Closure, а iterable заменять конкретными типами (array или Iterator) для большей предсказуемости.💬Читать подробнее
