Я очень рад, что в PHP 7.1 появился итерируемый псевдотип.
Теперь, хотя это здорово, когда просто перебираешь параметр этого типа, мне неясно, что делать, когда вам нужно передать его функциям PHP, которые принимают только array
или только Traversable
. Например, если вы хотите сделать array_diff, а ваш iterable
— это Traversable
, вы получите array
. И наоборот, если вы вызываете функцию, которая принимает итератор, вы получите ошибку, если iterable
является array
.
Есть что-то вроде iterable_to_array
(НЕ: iterator_to_array
) и iterable_to_traversable
?
Я ищу решение, которое избегает условных выражений в моих функциях только для того, чтобы позаботиться об этой разнице, и это не зависит от того, определяю ли я свои собственные глобальные функции.
Использование PHP 7.1