Перейти к содержимому

current()

Введение

SimpleXML — это расширение PHP, предоставляющее простой и удобный API для работы с XML-документами. Метод SimpleXMLIterator::current() является одним из методов итератора, предоставляемых классом SimpleXMLIterator. Он возвращает текущий объект SimpleXMLElement во время итерации. В этой статье мы рассмотрим, как использовать этот метод в PHP.

Понимание метода SimpleXMLIterator::current()

Метод SimpleXMLIterator::current() возвращает объект SimpleXMLElement по внутреннему указателю итератора. Его синтаксис:

php
SimpleXMLIterator::current(): SimpleXMLElement

Этот метод не требует параметров.

Важное примечание о циклах foreach: Цикл foreach в PHP автоматически вызывает current() в начале каждой итерации для заполнения переменной цикла, а затем перемещает указатель с помощью next(). Поэтому вызов current() внутри тела цикла foreach вернёт текущий элемент (идентичный переменной цикла), а не следующий. Для явного доступа к текущему элементу используйте переменную цикла или применяйте rewind() и valid() вместе с next().

Пример использования

Рассмотрим пример, чтобы понять, как использовать метод SimpleXMLIterator::current() в PHP:

php
<?php
$books = new SimpleXMLIterator('books.xml');
foreach ($books as $book) {
    echo $book->title . "\n";
    // current() returns the current element (same as $book)
    // var_dump($books->current()); 
}

В этом примере мы создаём объект SimpleXMLIterator непосредственно из XML-файла. Мы используем цикл foreach для перебора каждого элемента книги и вывода его заголовка. Поскольку foreach вызывает current() перед перемещением указателя, current() возвращает текущий узел внутри тела цикла. Для явного доступа к текущему узлу используйте переменную $book, предоставляемую циклом, или переключитесь на цикл while с rewind(), valid() и next() для ручного управления указателем:

php
<?php
$books = new SimpleXMLIterator('books.xml');
$books->rewind();
while ($books->valid()) {
    echo $books->current()->title . "\n";
    $books->next();
}

Заключение

Метод SimpleXMLIterator::current() обеспечивает доступ к объекту SimpleXMLElement по внутреннему указателю итератора. Это стандартная часть интерфейса Iterator в PHP, обеспечивающая согласованное поведение при обходе XML-данных. Разработчикам следует учитывать, что foreach автоматически вызывает current() в начале каждой итерации, поэтому внутри тела цикла он возвращает текущий элемент. Для точного управления комбинируйте current() с key(), next() и rewind().

Практика

Что делает функция current() в PHP согласно источнику?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.