<MyRusakov.ru />

Разработчик игр на Unreal Engine

Разработчик игр на Unreal Engine

Этот комплект с нуля всего за 7 месяцев сделает Вас Unreal-разработчиком. И при этом учиться достаточно 1 час в день.

Начнёте Вы с основ программирования, постепенно перейдя к C++. Затем очень подробно изучите Unreal Engine, и после научитесь программировать на C++ в Unreal Engine. В конце создадите крупный проект на C++ в Unreal Engine для своего портфолио.

Комплект содержит:

- 416 видеоуроков

- 95 часов видео

- 1024 задания для закрепления материала из уроков

- 3 финальных тестирования

- 4 сертификата

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Iterable в PHP

Iterable в PHP

В программировании одним из ключевых моментов является работа с данными в виде последовательностей или коллекций. Для удобной работы с такими данными, как массивы, списки или результаты запросов к базе данных, в PHP существует понятие iterable — важная концепция, которая используется для итерации по элементам коллекций данных.

Что такое iterable?

Iterable в PHP — это псевдотип, который позволяет типизировать аргументы и возвращаемые значения, указывая, что значение может быть итерируемым (т.е. может быть использовано в циклах, таких как foreach). Итерируемые объекты в PHP могут быть одного из двух типов:

  1. Массивы — обычные массивы, с которыми большинство разработчиков работают ежедневно.
  2. Объекты, реализующие интерфейс Traversable — такие как генераторы или объекты, реализующие интерфейс Iterator или IteratorAggregate**.

Как использовать iterable

Этот псевдотип был введен в PHP 7.1 для указания, что функция или метод могут принимать либо массив, либо объект, поддерживающий итерацию.

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

function processItems(iterable $items) {
    foreach ($items as $item) {
        echo $item . PHP_EOL;
    }
}

$array = [1, 2, 3, 4];
processItems($array);  // Работает с массивом

function getGenerator(): iterable {
    yield 'a';
    yield 'b';
    yield 'c';
}

processItems(getGenerator());  // Работает с генератором

Здесь функция processItems() принимает итерируемое значение (массив или объект-генератор) и использует цикл foreach, чтобы пройтись по каждому элементу. Это позволяет функции работать с любым типом данных, который можно итерировать.

Итераторы в PHP

Кроме массивов, объект также может быть итерируемым, если он реализует интерфейс Iterator или IteratorAggregate. Это важно для создания классов, которые могут работать как коллекции данных, что делает их более гибкими и управляемыми.

Пример создания итерируемого объекта:

class MyCollection implements Iterator {
    private $items = [];
    private $position = 0;

    public function __construct($items) {
        $this->items = $items;
    }

    public function current() {
        return $this->items[$this->position];
    }

    public function key() {
        return $this->position;
    }

    public function next() {
        ++$this->position;
    }

    public function rewind() {
        $this->position = 0;
    }

    public function valid() {
        return isset($this->items[$this->position]);
    }
}

$collection = new MyCollection([1, 2, 3, 4]);

foreach ($collection as $item) {
    echo $item . PHP_EOL;
}

Этот код создаёт класс MyCollection, который можно итерировать так же, как и массив. Интерфейс Iterator требует реализации методов current(), key(), next(), rewind() и valid() для работы с циклом foreach.

Генераторы и yield

Одним из самых мощных инструментов, которые поддерживают iterable, являются генераторы. Генераторы позволяют работать с большими объемами данных более эффективно, чем массивы, поскольку они возвращают элементы по одному, вместо того чтобы загружать все данные в память сразу. Для создания генератора используется ключевое слово yield.

Пример генератора:

function generateItems(): iterable {
    for ($i = 1; $i <= 5; $i++) {
        yield $i;
    }
}

foreach (generateItems() as $item) {
    echo $item . PHP_EOL;
}

Генератор возвращает значения по мере их запроса, что снижает использование памяти и повышает производительность в ситуациях, когда необходимо обрабатывать большие объемы данных, например, из базы данных.

Преимущества использования iterable

  1. Универсальность: Использование iterable позволяет писать более гибкие функции, которые могут работать как с массивами, так и с итераторами или генераторами.

  2. Экономия памяти: С помощью генераторов можно итерировать через огромные наборы данных, не загружая их целиком в память.

  3. Простота управления коллекциями: Объекты, реализующие интерфейс Iterator, могут быть настроены для управления коллекциями данных, что даёт возможность более четкого контроля над процессом итерации.

  4. Читаемость кода: Использование iterable делает код более читаемым и позволяет явно указать, что функция или метод работают с итерируемыми значениями, что улучшает поддержку и понимание кода.

Использование iterable в качестве возвращаемого значения

В PHP 7.1 также появилась возможность указывать, что функция возвращает итерируемое значение. Например:

function getItems(): iterable {
    return [1, 2, 3, 4];
}

Функция getItems() возвращает итерируемое значение, что может быть как массивом, так и объектом-итератором.

Заключение

Iterable — это мощный инструмент в арсенале разработчика PHP, который помогает эффективно работать с коллекциями данных, улучшая гибкость и производительность кода. Используя iterable и генераторы, можно создавать более оптимизированные и управляемые системы обработки данных, особенно при работе с большими объемами информации.

Эти концепции особенно полезны в ситуациях, когда требуется экономия ресурсов или нужно гибко управлять сложными наборами данных.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.