Sobes.tech
Назад к вопросам
Junior — Middle
99

Применяли ли вы в своих проектах паттерн итератор или аналогичные механизмы для обхода коллекций?

Компании, где спрашивали
Tilda

Ответ от нейросети

sobes.tech AI

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

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

Пример простого итератора:

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

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

    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]);
foreach ($collection as $item) {
    echo $item . "\n";
}

Такой подход улучшает инкапсуляцию и гибкость работы с данными.