cloudcastle/support
Composer 安装命令:
composer require cloudcastle/support
包简介
Production-ready PHP 8.1+ package (CloudCastle Support).
关键字:
README 文档
README
Строковые и массивные утилиты + хелперы потока для PHP 8.1+. Корректны для UTF-8, быстры и без утечек памяти. Функциональный суперсет пяти популярных библиотек в одном пакете с единым API.
Установка
composer require cloudcastle/support
Требуется PHP 8.1+. Единственная runtime-зависимость — собственный
cloudcastle/inflector (инфлексия;
сам не имеет зависимостей — экосистема полностью самодостаточна).
Быстрый старт
<?php use CloudCastle\Support\Str; use CloudCastle\Support\Arr; use CloudCastle\Support\Helpers; // Строки: форматы имён (UTF-8), срезы, маскирование Str::studly('foo_bar_baz'); // 'FooBarBaz' Str::camel('foo_bar_baz'); // 'fooBarBaz' Str::snake('fooBarBaz'); // 'foo_bar_baz' Str::headline('user_profile'); // 'User Profile' Str::between('«ключ»', '«', '»'); // 'ключ' (корректно по символам) Str::mask('4111111111111111', '*', 0, 12); // '************1111' Str::plural('category'); // 'categories' Str::isUuid('e2b0dd0e-9f8a-4c1e-8b2a-1234567890ab'); // true // Массивы: точечная нотация $config = ['app' => ['db' => ['host' => 'localhost']]]; Arr::get($config, 'app.db.host'); // 'localhost' Arr::has($config, 'app.db.port'); // false Arr::dot($config); // ['app.db.host' => 'localhost'] Arr::pluck([['id' => 1], ['id' => 2]], 'id'); // [1, 2] // Хелперы потока Helpers::retry(3, static fn (): string => callExternalApi()); Helpers::blank(' '); // true Helpers::tap($user, static fn ($u) => $u->save());
Возможности
- Форматы имён —
studly/camel/snake/kebab/title/headlineс корректной многобайтовой обработкой. - Регистр UTF-8 —
lower/upper/ucfirst/lcfirstчерезmb_*с ASCII fast-path (в разы быстрее на идентификаторах). - Поиск и срезы —
after/before/between,contains/startsWith/endsWith,limit/wordCount/squish,padLeft/padRight/padBoth. - Маскирование и генерация —
mask(сокрытие ПД: карт, счетов, телефонов),random(безопасная алфавитно-цифровая строка наrandom_bytes). - Инфлексия —
plural/singular(через собственныйcloudcastle/inflector). - Предикаты —
isJson/isUuid/isAscii. - Массивы —
get/set/has/forget(точечная нотация),only/except/pluck,flatten/collapse/dot/undot,first/last/where/prepend. - Хелперы потока —
tap/with/value/blank/filled/retry/dataGet/dataSet.
Функционально пакет покрывает возможности пяти сравниваемых аналогов вместе взятых:
illuminate/support, symfony/string, nette/utils, voku/stringy, doctrine/inflector.
Возможности против аналогов
Сводная таблица (генерируется автоматически из tools/features-data.php; значения выверены
по коду и документации аналогов). Легенда: ✅ полностью · ⚠️ частично · 🔌 адаптер · ❌ нет · — неприменимо.
Сгенерировано из tools/features-data.php (факты о поддержке). Легенда: ✅ полностью · ⚠️ частично · 🔌 адаптер · ❌ нет · — неприменимо.
Форматы имён
| Функция | Support | illuminate | symfony | nette | voku | doctrine | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| StudlyCase / PascalCase | ✅ | ✅ | ⚠️ | ❌ | ✅ | ⚠️ | Паритет |
| camelCase | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | Паритет |
| snake_case | ✅ | ✅ | ✅ | ❌ | ✅ | ⚠️ | Паритет |
| kebab-case | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | Паритет |
| Title / headline | ✅ | ✅ | ⚠️ | ⚠️ | ✅ | ❌ | Паритет |
Регистр (UTF-8)
| Функция | Support | illuminate | symfony | nette | voku | doctrine | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| lower / upper (mb) | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | Паритет |
| ucfirst / lcfirst (mb) | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | Паритет |
| ASCII fast-path (перф) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | Support |
Поиск, срезы, дополнение
| Функция | Support | illuminate | symfony | nette | voku | doctrine | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| after / before / between | ✅ | ✅ | ✅ | ⚠️ | ✅ | ❌ | Паритет |
| contains / startsWith / endsWith | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | Паритет |
| limit / wordCount / squish | ✅ | ✅ | ⚠️ | ⚠️ | ⚠️ | ❌ | Support, illuminate |
| padLeft / padRight / padBoth (mb) | ✅ | ✅ | ✅ | ⚠️ | ✅ | ❌ | Паритет |
Маскирование и генерация
| Функция | Support | illuminate | symfony | nette | voku | doctrine | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| mask (сокрытие ПД, mb) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | Support, illuminate |
| random (алфавитно-цифровой) | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | Паритет |
Инфлексия (число)
| Функция | Support | illuminate | symfony | nette | voku | doctrine | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| plural / singular | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | Паритет |
Предикаты
| Функция | Support | illuminate | symfony | nette | voku | doctrine | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| isJson | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | Паритет |
| isUuid | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | Support, illuminate |
| isAscii | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | Паритет |
Массивы (точечная нотация)
| Функция | Support | illuminate | symfony | nette | voku | doctrine | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| get / set / has / forget («a.b.c») | ✅ | ✅ | ❌ | ⚠️ | ❌ | ❌ | Support, illuminate |
| only / except / pluck | ✅ | ✅ | ❌ | ⚠️ | ❌ | ❌ | Support, illuminate |
| flatten / collapse / dot / undot | ✅ | ✅ | ❌ | ⚠️ | ❌ | ❌ | Support, illuminate |
Хелперы потока
| Функция | Support | illuminate | symfony | nette | voku | doctrine | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| tap / with / value | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | Support, illuminate |
| blank / filled | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | Support, illuminate |
| retry (повтор с предикатом) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | Support, illuminate |
Зависимости и безопасность
| Функция | Support | illuminate | symfony | nette | voku | doctrine | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| Runtime-зависимости (меньше — лучше) | ⚠️ | ❌ | ✅ | ✅ | ⚠️ | ✅ | symfony, nette, doctrine |
| Единый API: строки + массивы + хелперы | ✅ | ✅ | ❌ | ⚠️ | ❌ | ❌ | Support, illuminate |
| Без роста памяти (bounded, нет кэш-утечки) | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | Support (vs illuminate) |
Производительность
Изолированные замеры без Xdebug (composer compare), эквивалентные операции. Метрика —
ops/sec (больше — лучше); «—» — операция не поддерживается.
Сгенерировано из composer compare (PHP 8.1.34). Правки в блоке будут перезаписаны.
| Сценарий | cloudcastle/support | illuminate/support | voku/stringy | symfony/string | doctrine/inflector | nette/utils | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| StudlyCase (foo_bar_baz → FooBarBaz) | 14993044 ops/s | 11600896 ops/s | 252956 ops/s | — | — | — | cloudcastle/support |
| camelCase (foo_bar_baz → fooBarBaz) | 16474093 ops/s | 13070439 ops/s | 282354 ops/s | 333785 ops/s | — | — | cloudcastle/support |
| snake_case (fooBarBaz → foo_bar_baz) | 11758632 ops/s | 9624378 ops/s | — | 430024 ops/s | — | — | cloudcastle/support |
| Плюрализация (category → categories) | 14847094 ops/s | 1006287 ops/s | — | — | 12246143 ops/s | — | cloudcastle/support |
| Точечный доступ (Arr::get "a.b.c") | 2783953 ops/s | 1354903 ops/s | — | — | — | — | cloudcastle/support |
| Уплощение в точечные ключи (Arr::dot) | 2066770 ops/s | 2015717 ops/s | — | — | — | — | cloudcastle/support |
| Рекурсивное уплощение (Arr::flatten) | 1639617 ops/s | 1462092 ops/s | — | — | — | 1059823 ops/s | cloudcastle/support |
| Выборка столбца (Arr::pluck) | 8699168 ops/s | 924049 ops/s | — | — | — | — | cloudcastle/support |
| Фильтр ключей (Arr::only) | 5694527 ops/s | 5632206 ops/s | — | — | — | — | cloudcastle/support |
| Проверка пустоты (Helpers::blank) | 13976355 ops/s | 15923705 ops/s | — | — | — | — | illuminate/support |
| Точечное чтение значения (Helpers::dataGet) | 2655295 ops/s | 1466155 ops/s | — | — | — | — | cloudcastle/support |
Полное сравнение по каждой возможности — в Wiki: Сравнение.
Заключение: когда что выбирать
Сильные стороны cloudcastle/support — единый API строк, массивов и хелперов потока,
корректный для UTF-8 на всех операциях, с прицелом на финтех-безопасность: mask для
сокрытия ПД, random на random_bytes, срезы по символам (не по байтам). Все горячие пути
работают с ограниченной памятью — в отличие от illuminate/support, где статический
$studlyCache растёт без ограничений (на разнообразном вводе это утечка памяти).
Производительность: support — победитель почти во всех сценариях таблицы выше (см.
графу «🏆 Победитель»). Case-конверсия (studly/camel/snake/kebab) — в ~1.3–1.7× быстрее
illuminate/support благодаря ограниченному (bounded) кэшу; плюрализация — на порядок
быстрее illuminate и обгоняет doctrine/inflector напрямую; массивные операции (Arr::get,
dot, flatten, pluck, only) и хелперы (dataGet) — быстрее illuminate (pluck — в ~9×).
Ключевое отличие: кэш ограничен по размеру и сбрасывается, тогда как неограниченный
$studlyCache в illuminate на разнообразном вводе течёт памятью. voku/stringy и
symfony/string support обгоняет на всех сценариях. Прежнее исключение —
nette/utils на точечном доступе — снято: его API требует массив ключей (['a','b','c']),
тогда как support принимает строку 'a.b.c' — эргономичнее ценой разбора.
Слабые стороны — пакет молодой; для сложной лингвистики (склонение не-английских слов)
инфлексия ограничена возможностями doctrine/inflector; коллекции вынесены в отдельный
пакет cloudcastle/collection (этот пакет — статические утилиты, не цепочечные объекты).
Честные рекомендации:
- Единый набор утилит без тяжёлых зависимостей фреймворка —
cloudcastle/support. - Экосистема Laravel целиком —
illuminate/support(тянет пол-фреймворка, но нативен для Laravel). - Объектные цепочки и трансформация Unicode —
symfony/stringилиvoku/stringy. - Только инфлексия английского —
doctrine/inflectorнапрямую. - Разнородные утилиты Nette-проекта —
nette/utils.
Документация
- Wiki — руководство пользователя
- Быстрый старт
- Возможности (Features)
- Сравнение с аналогами
- Архитектура
- API-документация
Качество
Пакет придерживается production-стандартов: строгая типизация, полный статический анализ (PHPStan max, Psalm level 1, PHPMD, Deptrac, Rector), покрытие тестами 100 % на каждый файл и мутационное тестирование (Infection MSI 100 %). Матрица CI — PHP 8.1–8.5.
composer ci # полный пайплайн качества composer check # быстрые проверки перед коммитом composer test # тесты (unit + integration + security + load + performance) composer compare # сравнение производительности с аналогами
Контакты
- Email — alex-4-17@yandex.ru
- VK — https://vk.com/leha_zorin
- Telegram — @CloudCastle85
- Телефон — +79872763991
- Сетка — https://set.ki/LdYRz76
Поддержать проект
Реквизиты для поддержки автора — в DONATE.md.
Contributors
Спасибо всем, кто вносит вклад в проект:
Список ведётся по спецификации all-contributors.
Лицензия
MIT © CloudCastle
cloudcastle/support 适用场景与选型建议
cloudcastle/support 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 07 月 15 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「support」 「php8」 「cloudcastle」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 cloudcastle/support 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 cloudcastle/support 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 cloudcastle/support 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
a simple toolkit for social networks
Powerful class discovery system for Laravel with attribute-based scanning, directory traversal, and monorepo support
ARCANEDEV Support Helpers
Bundle for Symfony 4.4, 5+, 6+ applications with Vuetify
Alfabank REST API integration
common components
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-07-15