cloud-castle / support
Набор утилит для PHP 8.1+: строки (Str), массивы (Arr) с dot-нотацией, числа (Num), даты (Dates), объекты (Obj) и глобальные хелперы. Маскирование ПД из коробки, нулевые внешние зависимости.
Requires
- php: >=8.1
- ext-mbstring: *
- cloud-castle/inflector: >=1.0
- psr/clock: ^1.0
Requires (Dev)
- adbario/php-dot-notation: ^2.5
- deptrac/deptrac: ^3.0 || ^4.0
- dflydev/dot-access-data: ^3.0
- ergebnis/composer-normalize: ^2.45
- friendsofphp/php-cs-fixer: ^3.75
- icanhazstring/composer-unused: ^0.9
- illuminate/support: ^10.0 || ^11.0
- infection/infection: ^0.29 || ^0.33
- nette/utils: ^4.0
- php-parallel-lint/php-parallel-lint: ^1.4
- phpmd/phpmd: ^2.15
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^1.12 || ^2.1
- phpstan/phpstan-deprecation-rules: ^1.2 || ^2.0
- phpstan/phpstan-phpunit: ^1.4 || ^2.0
- phpstan/phpstan-strict-rules: ^1.6 || ^2.0
- phpunit/phpunit: ^10.5 || ^11.5
- psalm/plugin-phpunit: ^0.19 || ^0.20
- rector/rector: ^1.2 || ^2.0
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.12 || ^4.0
- symfony/property-access: ^6.4
- vimeo/psalm: ^6.0
- webmozart/assert: ^1.11
This package is auto-updated.
Last update: 2026-07-30 05:37:56 UTC
README
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
CloudCastle Support
Набор утилит для PHP 8.1+: строки (
Str), массивы (Arr), числа (Num), даты (Dates), объекты (Obj) и глобальные хелперы. API совместим с illuminate/support, но быстрее и без единой внешней зависимости.
Установка
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,contains/startsWith/endsWith,limit/mask/padLeft, многобайтовыеupper/lower/lengthи др.Arr:get/set/has/forgetс точечной нотацией,dot/undot,flatten/collapse,pluck,only/except,first/last/where.Num,Dates,Objи глобальные хелперы (functions.php).- Маскирование ПД (
Str::mask) — карты, счета, телефоны в логах/ответах. - Нулевые внешние зависимости — в отличие от illuminate/support.
Сравнение с аналогами
Все таблицы ниже сгенерированы автоматически из честных сравнительных
тестов (benchmarks/compare.php) на ОДИНАКОВОЙ операции для всех аналогов,
PHP 8.1.34, без Xdebug.
1. Функциональность
| Возможность | 🏆 CloudCastle | illuminate | adbario | dflydev | symfony | array¹ |
|---|---|---|---|---|---|---|
| Dot-нотация доступа к массиву (get/set/has/forget) | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Строковые хелперы (case/mask/slug) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Числовые и датовые хелперы | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Хелперы объектов и коллекций | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |
| Нулевые внешние зависимости | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ |
| Всего | 🏆 5 | 4 | 2 | 2 | 2 | 1 |
2. Безопасность и корректность
| Свойство | 🏆 CloudCastle | illuminate | adbario | dflydev | symfony | array¹ |
|---|---|---|---|---|---|---|
| Null-safe доступ по пути со значением по умолчанию | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Маскирование ПД (карты/email/телефоны) из коробки | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Многобайтовая корректность строк (UTF-8) | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| Нулевые внешние зависимости (меньше поверхность атаки) | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ |
| Типобезопасные строгие сигнатуры хелперов | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Всего | 🏆 5 | 4 | 3 | 3 | 2 | 2 |
3. Производительность
Доступ к вложенному значению по строковому пути, 200 000 раз (минимум из 4).
| Решение | Время (мс) | Итог |
|---|---|---|
| array¹ | 16,3 | базовый уровень (не библиотека) |
| 🏆 CloudCastle | 107,3 | быстрейшее среди библиотек |
| dflydev | 150,6 | аналог |
| adbario | 205,5 | аналог |
| illuminate | 216,8 | аналог |
| symfony | 604,5 | аналог |
4. Потребление памяти
Пик памяти на 200 000 доступов (изолированный процесс, только целевая библиотека).
| Решение | Пиковая память (KB) | Итог |
|---|---|---|
| 🏆 CloudCastle | 9 149 | легчайшее среди библиотек |
| illuminate | 9 149 | аналог |
| adbario | 9 149 | аналог |
| dflydev | 9 149 | аналог |
| symfony | 9 149 | аналог |
| array¹ | 9 149 | базовый уровень (не библиотека) |
¹ Базовый уровень (нативные вызовы/примитивы без полноты решения) показан для контекста и не претендует на победу среди библиотек-аналогов.
Операция — доступ к вложенному значению по строковому пути (dot- или
bracket-синтаксис): её разбирают сами библиотеки. nette/utils в сравнение не
входит, так как её Arrays::get принимает готовый массив ключей, а не разбирает
путь-строку (иная парадигма API). Память измеряется в изоляции (только целевая
библиотека в процессе).
Вывод: CloudCastle Support — самый быстрый разборщик строковых путей (в 2× быстрее illuminate) и самый лёгкий по памяти, с маскированием ПД из коробки и нулевыми внешними зависимостями при широчайшем наборе хелперов (строки, массивы, числа, даты, объекты).
Разработка
composer install
composer check # линтеры + статический анализ + тесты
composer fix # автоисправления (Rector, PHP CS Fixer, PHPCBF)
composer ci # полный CI-пайплайн локально
Полный список команд с описаниями: composer run-script --list.
Документация
- Репозиторий: https://gitverse.ru/cloud-castle/support
- История изменений: CHANGELOG.md
- Как внести вклад: CONTRIBUTING.md
- Кодекс поведения: CODE_OF_CONDUCT.md
- Политика безопасности: SECURITY.md
Лицензия
MIT © CloudCastle (alex-4-17@yandex.ru)
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano