Код IT
← Каталог

Работа с составными типами в PHP — 3. Коллекции

Фрагмент из «Работа с составными типами в PHP»: 3. Коллекции.

PHP main.php
class UserCollection implements IteratorAggregate {
    private array $users = [];

    public function add(User $user): void {
        $this->users[] = $user;
    }

    public function getAdmins(): UserCollection {
        $admins = new UserCollection();
        foreach ($this->users as $user) {
            if ($user->hasRole('admin')) {
                $admins->add($user);
            }
        }
        return $admins;
    }

    public function getIterator(): Traversable {
        return new ArrayIterator($this->users);
    }
}
class UserCollection implements IteratorAggregate {
    private array $users = [];

    public function add(User $user): void {
        $this->users[] = $user;
    }

    public function getAdmins(): UserCollection {
        $admins = new UserCollection();
        foreach ($this->users as $user) {
            if ($user->hasRole('admin')) {
                $admins->add($user);
            }
        }
        return $admins;
    }

    public function getIterator(): Traversable {
        return new ArrayIterator($this->users);
    }
}