У меня есть относительно простую функцию, которая использует foreach
PHP Traversable типа намек
function foo($t) {
$result;
foreach($t as $val) {
$result = dosomething($result, $val);
}
return $result;
}
Я хотел бы ввести подсказку, и Traversable
, кажется, точный тип намек мне нужно
function foo(Traversable $t) {
Однако это дает E_RECOVERABLE_ERROR
при использовании массива (который, конечно же, может использоваться в foreach
): example
Argument 1 passed to foo() must implement interface Traversable, array given
Есть ли способ набрать подсказку или это невозможно?
Из руководства (ссылка, которую вы опубликовали): 'Абстрактный базовый интерфейс, который не может быть реализован в одиночку. Вместо этого он должен быть реализован либо IteratorAggregate, либо Iterator.' – alfasin
Я считаю, что вы можете использовать 'array' в качестве подсказки, я буду проверять свою теорию, да, вы можете – Dale
@alfasin И как таковой, любой класс, реализующий« Итератор », также будет соответствовать 'Traversable', поскольку' Iterator' является подтипом 'Traversable'. Основная ООП-механика – dtech