Я новичок в php и учусь на php.net. Как мы знаем, когда мы хотим реализовать оспоримый интерфейс, который мы реализуем IteratorAggregate или же Итератор интерфейс с пользовательскими классами, который реализует оспоримый интерфейс внутри. Но одна вещь, которая смущает меня во втором нота на этой странице (http://php.net/manual/en/class.traversable.php) который говорит:
При реализации интерфейса, расширяющего Traversable, обязательно укажите IteratorAggregate или Iterator перед его именем в предложении Implements.
Может кто-нибудь сказать, что это говорит?
По сути, когда вы создаете класс, после оператора реализаций убедитесь, что вы перечислили IteratorAggregate или Iterator перед другими интерфейсами в объявлении.
<?php
interface Spam extends \Traversable
{
// ...
}
final class Ham implements \IteratorAggregate, Spam
{
public function getIterator()
{
return new \ArrayIterator(range(1, 10));
}
}
Других решений пока нет …