@topuserman

Как реализовать свой абстрактный класс коллекции?

Помогите пожалуйста реализовать абстрактный класс коллекции.

Хочется написать свой велосипед, чтобы до конца понять, как это должно работать и т.д.

Этот класс должен решить проблемы c типизацией возвращаемых значений метода.

Как я себе это представляю:

class PostCollection extends BaseCollection {

    # Устанавливаю тип коллекции, 
    # при попытке добавить в коллекцию другой тип - выбрасываем исключение

    protected static $collectionType = PostItem::class;

}

class PostItem {
   //...
}

class Posts {
   public function getAllPost() : PostCollection { ... }
}


Также, желательно, чтобы у абстрактного класса таже были реализованы интерфейсы Iterator, ArrayAccess, Countable;

Также планирую добавлять такие методы как map(), sort() и т.д.

Готовой реализации не требую. От вас нужна помощь, чтобы подсказали, как правильно нужно реализовать такие коллекции, какие нюансы стоит учесть? Правильно ли я через статическое свойство $collectionType определяю тип текущей коллекции ?

Или есть какие-то другие варианты ?

Пробовал разобрать, как устроены коллекции в laravel или других фреймворках. Было сложно и непонятно. Очень много кода, предусмотрено все, и на все случаи жизни. Еще и через рефлексию и т.д. Мне хотелось бы минимально рабочую версию реализовать.

За помощь буду очень благодарен!
  • Вопрос задан
  • 245 просмотров
Пригласить эксперта
Ответы на вопрос 2
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы