Я хотел бы знать, существует ли в PHP 5.6.11 различие между двумя следующими способами итерации с помощью SimpleXMLElement:
$simpleXMLIterator = new SimpleXMLIterator($xmlCode);
foreach ($simpleXMLIterator as $xmlElement) {
echo $xmlElement->getName(), "\n";
}
а также
$simpleXMLIterator = new SimpleXMLIterator($xmlCode);
for ($simpleXMLIterator->rewind(); $simpleXMLIterator->valid(); $simpleXMLIterator->next()) {
echo $simpleXMLIterator->current()->getName(), "\n";
}
Он будет вызывать одну и ту же логику внутри объекта. Iterator
- это интерфейс, который можно реализовать в своих собственных объектах. Интерфейс задает такие методы, как rewind()
, next()
, current()
,...
Если вы реализуете интерфейс, объект может использоваться с foreach()
. foreach()
распознает интерфейс и вызывает методы.
SimpleXMLIterator
реализует этот интерфейс, более конкретный он реализует RecursiveIterator
который расширяет Iterator
двумя способами (hasChildren()
и getChildren()
для обработки рекурсивных структур.