Search by

cloud-castle / support

alex-4-17

Набор утилит для PHP 8.1+: строки (Str), массивы (Arr) с dot-нотацией, числа (Num), даты (Dates), объекты (Obj) и глобальные хелперы. Маскирование ПД из коробки, минимум зависимостей (только PSR и инфраструктура cloud-castle).

v1.2.1 2026-09-04 18:27 UTC

This package is auto-updated.

Last update: 2026-09-04 18:29:30 UTC


README

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

CloudCastle Support

CloudCastle Support

Packagist PHP License Downloads Monthly Stars Dependents

GitVerse Quality CI PHP matrix Changelog

PHPStan Psalm Code style PHPMD Coverage Infection MSI

Набор утилит для PHP 8.1+: строки (Str), массивы (Arr), числа (Num), даты (Dates), объекты (Obj) и глобальные хелперы. API совместим с illuminate/support, но быстрее и с минимумом зависимостей (только PSR и инфраструктура cloud-castle).

Установка

composer require cloud-castle/support

Требуется PHP 8.1+.

Быстрый старт

<?php

use CloudCastle\Support\Str;
use CloudCastle\Support\Arr;

echo Str::snake('CloudCastleSupport');     // «cloud_castle_support»
echo Str::camel('foo_bar_baz');            // «fooBarBaz»
echo Str::mask('4111111111111111', '*', 6, 6);  // «411111******1111» — маскирование ПД

$config = ['db' => ['host' => '127.0.0.1', 'port' => 5432]];
echo Arr::get($config, 'db.host');         // «127.0.0.1» — доступ по точечной нотации
$flat = Arr::dot($config);                 // ['db.host' => '127.0.0.1', 'db.port' => 5432]

Возможности

  • Str — регистры snake/camel/studly/kebab/title, срезы after/before/between/take/charAt, замена replace/swap, транслитерация и слаги ascii/slug/transliterate, инфлексия plural/singular, генерация random/password/uuid, многобайтовые upper/lower/length и др.
  • Arrget/set/has/forget с точечной нотацией, dot/undot/flatten/collapse, функциональные map/mapWithKeys/keyBy/ where/sort/shuffle/random, pluck/only/except/first/last.
  • Numformat/currency/fileSize/abbreviate/ordinal, проценты, clamp, число прописью spell (ru/en, без ext-intl).
  • Dates, Obj и глобальные хелперы (functions.php).
  • Маскирование ПД (Str::mask) — карты, счета, телефоны в логах/ответах.
  • Криптостойкая генерацияrandom_int/random_bytes без modulo-смещения.
  • Минимум зависимостей — только PSR (psr/clock) и инфраструктура cloud-castle (cloud-castle/inflector), без тяжёлого стороннего кода.

Сравнение с аналогами

Все таблицы ниже сгенерированы автоматически из честных сравнительных тестов (benchmarks/compare.php) на ОДИНАКОВОЙ операции для всех аналогов, PHP 8.3.33, без Xdebug.

1. Функциональность

Функциональность🏆 CloudCastleilluminatenetteadbariodflydevsymfony
Доступ по dot-строке (get/set/has/forget)
Регистры и форматы имён (snake/camel/kebab/studly)
Транслитерация и слаги (ascii/slug)
Маскирование ПД (mask)
Плюрализация/склонение (plural/singular)
Числа: формат/валюта/размеры
Число прописью без ext-intl (spell)
Даты: diffHuman/startOf/isWeekend
Массивы: map/keyBy/sort/where/dot
Объекты: toArray/deepClone/classUses
Генерация: uuid/пароль/random
Без тяжёлых сторонних зависимостей
Всего🏆 1294221

2. Безопасность и корректность

Безопасность и корректность🏆 CloudCastleilluminatenetteadbariodflydevsymfony
Null-safe доступ по пути со значением по умолчанию
Маскирование ПД из коробки
Многобайтовая корректность строк (UTF-8)
Криптостойкая генерация (random_int, без bias)
Строгая типизация (strict_types, нативные типы)
Без тяжёлых сторонних зависимостей
Детерминированность (без глобальной локали)
Всего🏆 756442

3. Производительность — доступ по строковому пути в массиве

Доступ к вложенному значению по строковому пути, 200 000 раз (минимум из 4).

РешениеВремя (мс)Итог
native¹13,9базовый уровень (не библиотека)
🏆 CloudCastle81,5быстрейшее среди библиотек
dflydev118,9аналог
adbario156,9аналог
illuminate163,1аналог
symfony472,2аналог

4. Потребление памяти — доступ по строковому пути в массиве

Резидентный след библиотеки в операции «доступ по строковому пути в массиве» (изолированный замер, вычет baseline).

РешениеПамять (KB)Итог
native¹1базовый уровень (не библиотека)
🏆 dflydev30легчайшее среди библиотек
adbario48аналог
CloudCastle75аналог
illuminate83аналог
symfony352аналог

5. Производительность — обрезка строки по длине (UTF-8)

Обрезка многобайтовой строки до 12 символов с суффиксом, 200 000 раз (минимум из 4).

РешениеВремя (мс)Итог
native¹34,7базовый уровень (не библиотека)
🏆 CloudCastle41,8быстрейшее среди библиотек
illuminate50,9аналог

6. Потребление памяти — обрезка строки по длине (UTF-8)

Резидентный след библиотеки в операции «обрезка строки по длине (UTF-8)» (изолированный замер, вычет baseline).

РешениеПамять (KB)Итог
native¹1базовый уровень (не библиотека)
🏆 CloudCastle148легчайшее среди библиотек
illuminate198аналог

¹ Базовый уровень (нативные вызовы/примитивы без полноты решения) показан для контекста и не претендует на победу среди библиотек-аналогов.

Операции подобраны так, чтобы участники выполняли ОДИНАКОВУЮ работу: доступ по dot-строке разбирают сами библиотеки; для строковой оси берётся обрезка строки по длине с суффиксом (идентичный результат у всех). Память измеряется в изоляции — резидентный след только целевой библиотеки с вычетом baseline.

Плюсы и минусы

Плюсы:

  • Самый широкий функционал среди сравниваемых — суперсет объединения возможностей illuminate, nette, symfony/property-access, adbario и dflydev.
  • Быстрее аналогов на обеих измеренных операциях (dot-доступ и обрезка строк).
  • Безопасность из коробки: маскирование ПД, криптостойкая генерация без modulo-смещения, строгая типизация, UTF-8-корректность, детерминизм.
  • Качество: PHPStan max, Psalm level 1, 100% покрытие строк, Infection MSI 100%.
  • Минимум зависимостей — только PSR и лёгкая инфраструктура cloud-castle.

Минусы (честно):

  • Моложе и менее распространён, чем illuminate/nette — меньше звёзд, установок и сторонних материалов (главный и, по сути, единственный минус).
  • Резидентный след чуть выше, чем у узкоспециальных dot-библиотек (dflydev, adbario) и nette в конкретной операции: один класс несёт полный набор утилит, поэтому его загрузка стоит немного больше памяти. Осознанный компромисс в пользу функционала; среди полнофункциональных аналогов (illuminate) след ниже.

Когда использовать

  • Микросервисы и пакеты без Laravel — полный набор утилит без тяжёлого слоя фреймворка и лишних зависимостей.
  • Финтех и обработка ПД — маскирование карт/счетов/телефонов и криптостойкая генерация токенов «из коробки».
  • Многоязычные проекты — транслитерация, слаги, склонения и число прописью (ru/en) без ext-intl.
  • Строгие по качеству кодовые базы — предсказуемая строгая типизация и детерминированное поведение.

Если проект уже живёт в экосистеме Laravel, где illuminate/support и Collection подключены нативно, — там уместнее штатные хелперы фреймворка.

Вывод: CloudCastle Support даёт самый широкий набор утилит среди аналогов, опережает их по скорости на измеренных операциях и несёт безопасность (маскирование ПД, криптостойкая генерация) при минимуме зависимостей — ценой чуть большего резидентного следа, чем у узкоспециальных библиотек.

Разработка

composer install
composer check    # линтеры + статический анализ + тесты
composer fix      # автоисправления (Rector, PHP CS Fixer, PHPCBF)
composer ci       # полный CI-пайплайн локально

Полный список команд с описаниями: composer run-script --list.

Документация

Лицензия

MIT © CloudCastle (alex-4-17@yandex.ru)

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano