Releases: cloudcastle-apps/collection
Releases · cloudcastle-apps/collection
Release list
v1.1.0 — сериализация через cloudcastle/serialize
Immutable
release. Only release title and notes can be modified.
Добавлено
toSerialized(?SerializerInterface $serializer = null)иCollection::fromSerialized(string $payload, ?SerializerInterface $serializer = null)— сериализация и восстановление элементов любым форматом cloudcastle/serialize: JSON по умолчанию, PHP с белым списком классов, igbinary, подписанный. Fail-safe контракт, DoS-лимиты, анти-POP (fail-closed исключение на неразрешённом классе).
Изменено
toJson()без флагов кодирует через cloudcastle/serialize: юникод без экранирования ("Москва"вместо"\u041c..."), дробные сохраняют тип (1.0, а не1), вложенность и длина ограничены. Пользовательские флаги — прямойjson_encode, совместимость полная. Цена расширенного контракта ≈2 % пропускной способностиtoJson.- Внутренний хэш уникальности (
unique()/duplicates()) для объектов и массивов считается черезPhpSerializer.
Качество
150 тестов, покрытие 100 % (554/554), MSI 100 % (565 killed / 0 escaped).
v1.0.0 — первый релиз
Immutable
release. Only release title and notes can be modified.
Первый стабильный релиз cloudcastle/collection.
Возможности
- ~85 методов в одном классе
Collection: создание (make/wrap/times/range/fromJson), доступ и поиск (first/last/firstOrFail/sole/search), трансформация (map/flatMap/pluck/flatten), фильтрация (filter/reject/where-семейство/unique/duplicates), срезы и группировка (chunk/split/partition/groupBy/keyBy/countBy), объединение (merge/union/combine/zip/crossJoin/diff/intersect), агрегация (sum/avg/median/mode/reduce), сортировка (sortBy по Шварцу), мутаторы и higher-order (each/tap/pipe/when). - Строгая семантика (
===) во всех сравнениях:contains('1')≠contains(1),uniqueне схлопывает1/'1'/true— защита от type juggling по построению. - Строка из данных — данные: имя функции никогда не выполняется;
map('intval')не передаёт ключ в базу счисления,filter('is_int')не падает ArgumentCountError. - JSON fail-safe: исключения вместо тихого
false, валидация верхнего уровня, клэмп глубины.
Качество
- 100% покрытие на каждый файл пятью видами тестов, Infection MSI 100% (553/553).
- PHPStan max, Psalm level 1, PHPMD, Deptrac, Rector, PSR-12. Матрица CI PHP 8.1–8.5.
- Бенчмарки против четырёх аналогов с графой победителя: where ×7 быстрее illuminate, pluck ×29, sum по полю ×12, groupBy ×4; честно задокументированы и проигрыши (unique — цена строгости, chunk — вложенные коллекции).
Полный список — в CHANGELOG.