Skip to content

Features

github-actions[bot] edited this page Jul 16, 2026 · 1 revision

🧩 Возможности CloudCastle Collection

Главная · Сравнение · Быстрый старт

Один класс Collection — ~85 методов, сгруппированных в шесть семейств. Каждое разобрано на отдельной странице — с принципом работы, плюсами и минусами, рекомендациями и антипаттернами.

Карта возможностей

mindmap
  root((Collection))
    Доступ и проверки
      first / last / get
      firstOrFail / sole
      contains строгий
      has / every / some
    Трансформация
      map / flatMap / pluck
      filter / reject / where*
      unique типобезопасный
      flatten / collapse
    Срезы и группировка
      chunk / split / partition
      groupBy / keyBy / countBy
      take / skip / nth
    Объединение
      merge / union / combine
      zip / crossJoin
      diff / intersect строгие
    Агрегация
      sum / avg / median / mode
      sortBy по Шварцу
      reduce
    Безопасность
      Строгая семантика ===
      Строка — не код
      JSON fail-safe
Loading

Страницы возможностей

Раздел Что внутри
🔎 Доступ и проверки first/last/get, firstOrFail/sole, строгие contains/search, has/every/some
🔁 Трансформация и фильтрация map/flatMap/pluck, filter/reject, where-семейство, типобезопасный unique, flatten
✂️ Срезы и группировка chunk/split/partition, groupBy/keyBy/countBy, take*/skip*/nth
🔗 Объединение множеств merge/union/combine/concat, zip/crossJoin, строгие diff*/intersect*
📊 Агрегация и сортировка sum/avg/median/mode, reduce, sortBy по Шварцу, implode/join
🛡️ Строгая семантика и JSON === во всех сравнениях, строка-как-данные, fail-safe toJson/fromJson, мутаторы и higher-order

Принципы дизайна

  • Строгость по умолчанию — все операции сравнения используют ===: contains('1') не находит 1, unique не схлопывает 1/'1'/true. Ловушки type juggling исключены по построению.
  • Строка из данных — данныеcontains('system') ищет значение, groupBy('trim') извлекает поле; имя функции, пришедшее извне, никогда не выполняется.
  • JSON fail-safetoJson() бросает исключение вместо тихого false, fromJson() валидирует вход и клэмпит глубину.
  • Скорость через C-реализации — замыкания без параметра ключа уходят в array_map/array_filter/array_reduce, выборки по полю — в array_column, sortBy — преобразование Шварца.
  • Ноль зависимостей — только PHP 8.1+.
  • Открыт для наследования — protected-хелперы (dataGet, hashValue, valueResolver…) — зафиксированный тестами контракт для дочерних коллекций.

Clone this wiki locally