atlcom / helper
Atlcom Helper library
Fund package maintenance!
Yoomoney
Requires
- php: ^8.1
- ext-mbstring: *
- nesbot/carbon: >=2.0
Requires (Dev)
- fakerphp/faker: ^1.23
- phpunit/phpunit: ^10.0
README
Класс помощник для работы со строками, числами, массивами.
История изменений
Установка
composer require atlcom/helper
Описание методов
Array
Работа с массивами
arrayDot($value): array
Возвращает одномерный массив из многомерного
$array = Helper::arrayDot(['a' => ['b' => 2, 'c' => 3]]); // $array = ['a.b' => 2, 'a.c' => 3]
arrayExcludeTraceVendor($value, $basePath): array
Исключает из массива трассировки пакетные ошибки
$array = Helper::arrayExcludeTraceVendor(debug_backtrace()); // $array = []
arrayFirst($value, $key): mixed
Возвращает значение первого элемента массива
$mixed = Helper::arrayFirst(['a', 'b']); // $mixed === 'a' $mixed = Helper::arrayFirst(['a' => 1, 'b' => 2]); // $mixed === 1
arrayGet($value, $key): mixed
Возвращает значение из массива по имению ключа
$mixed = Helper::arrayGet(['a', 'b'], 0); // $mixed === 'a' $mixed = Helper::arrayGet(['a' => ['b' => 2, 'c' => 3], 'b' => 4], 'a.b'); // $mixed === 2 $mixed = Helper::arrayGet(['a.b' => 1, 'b' => 2], 'a.b'); // $mixed === 1
arrayLast($value, $key): mixed
Возвращает значение последнего элемента массива
$mixed = Helper::arrayLast(['a', 'b']); // $mixed === 'b' $mixed = Helper::arrayLast(['a' => 1, 'b' => 2]); // $mixed === 2
arrayMappingKeys($value, $from, $to): array
Возвращает массив с маппингом ключей
$array = Helper::arrayMappingKeys(['a' => 1, 'b' => 2], 'a', 'c'); // $array = ['c' => 1, 'b' => 2] $array = Helper::arrayMappingKeys([['a' => 1], ['a' => 2]], ['a' => 'c']); // $array = [['c' => 1], ['c' => 2]]
arraySearchKeys($value, ...$searches): array
Возвращает массив найденных ключей в искомом массиве
$array = Helper::arraySearchKeys(['a' => 1, 'b' => 2], 'a'); // $array = ['a' => 1] $array = Helper::arraySearchKeys(['a' => ['b' => 2, 'c' => 3]], '*.b'); // $array = ['a.b' => 2]
arraySearchKeysAndValues($value, ...$keys, ...$values): array
Возвращает массив найденных ключей в искомом массиве
$array = Helper::arraySearchKeys(['a' => 1, 'b' => 2], 'a'); // $array = ['a' => 1] $array = Helper::arraySearchKeys(['a' => ['b' => 2, 'c' => 3]], '*.b'); // $array = ['a.b' => 2]
arraySearchValues($value, ...$searches): array
Возвращает массив найденных ключей в искомом массиве
$array = Helper::arraySearchValues(['a', 'b'], 'a'); // $array = ['a'] $array = Helper::arraySearchValues(['abc', 'def'], ['a*', '*f']); // $array = ['abc', 'def']
arrayUnDot($value): array): array
Возвращает многомерный массив из одномерного
$array = Helper::arrayUnDot(['a.b' => 2, 'a.c' => 3]); // $array = ['a' => ['b' => 2, 'c' => 3]]
Cache
Работа с кешем
cacheRuntime($key, $callback, $cacheEnabled): mixed
Сохраняет значение value в кеше по ключу key или возвращает значение при его наличии
Если cacheEnabled выключен, то кеш не используется
$mixed = Helper::cacheRuntime('key', fn () => 1); // $mixed = 1 $mixed = Helper::cacheRuntimeGet('key'); // $mixed = 1
cacheRuntimeExists($key): bool Проверяет существование ключа в кеше и возвращает true/false
$boolean = Helper::cacheRuntimeExists('key'); // $boolean = false
cacheRuntimeGet($key, $default): mixed
Возвращает значение из кеша по ключу key или возвращает значение по умолчанию default
$mixed = Helper::cacheRuntimeGet('key', 'value'); // $mixed = 'value'
cacheRuntimeSet($key, $value): mixed
Сохраняет значение value в кеше по ключу key
$mixed = Helper::cacheRuntimeSet('key', 'value'); // $mixed = 'value'
Case
Работа со стилем
caseCamel($value): string
Возвращает строку в стиле camelCase
$string = Helper::caseCamel('abc-def'); // $string = 'abcDef'
caseKebab($value): string
Возвращает строку в стиле kebab-case
$string = Helper::caseKebab('abcDef'); // $string = 'abc-Def'
casePascal($value): string
Возвращает строку в стиле PascalCase
$string = Helper::casePascal('abc-def'); // $string = 'AbcDef'
caseSnake($value): string
Возвращает строку в стиле snake_case
$string = Helper::caseSnake('abcDef'); // $string = 'abc_Def'
Color
Работа с цветами
colorHexToRgb($value): array
Возвращает массив с RGB цветом из цвета HEX строки
$array = Helper::colorHexToRgb('#000'); // $array = ['r' => 0, 'g' => 0, 'b' => 0, 'a' => null] $array = Helper::colorHexToRgb('#000000'); // $array = ['r' => 0, 'g' => 0, 'b' => 0, 'a' => null] $array = Helper::colorHexToRgb('#00000000'); // $array = ['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0]
colorRgbToHex($red, $green, $blue, $alpha): string
Возвращает HEX строку из RGB цвета
$string = Helper::colorRgbToHex(0, 0, 0); // $string = '#000000' $string = Helper::colorRgbToHex(0, 0, 0, 0); // $string = '#00000000'
Crypt
Работа с шифрацией
cryptArrayDecode($value, $password): array
Дешифрует все значения элементов массива вида 'hash:crypt'
$array = Helper::cryptArrayDecode(['a' => 'hash:crypt']); // $array = ['a' => 1]
cryptArrayEncode($value, $password, $random)
Шифрует все значения элементов массива с добавлением хеша значения 'hash:crypt'
$array = Helper::cryptArrayDecode(['a' => 1]); // $array = ['a' => 'hash:crypt']
cryptDecode($value, $password): string
Дешифрует строку с паролем
$string = Helper::cryptDecode('nh93432NibR3td26', 'password'); // $string = 'abc'
cryptEncode($value, $password, $random): string
Шифрует строку с паролем
$string = Helper::cryptEncode('abc', 'password'); // $string = 'nh93432NibR3td26'
Date
Работа с датами
dateDayName($value): string
Возвращает название дня недели переданного значения
$string = Helper::dateDayName('31.12.2025'); // $string = 'среда'
dateFromString($value): ?Carbon
Возвращает объект Carbon с распознанной датой или null
$date = Helper::dateFromString('в следующий понедельник'); // $date->format('d.m.Y') = 'XX.XX.XXXX' $date = Helper::dateFromString('через 2 месяца'); // $date->format('d.m.Y') = 'XX.XX.XXXX'
dateToString($value, $declension): ?Carbon
Возвращает дату прописью на русском языке с учетом склонения по падежу
$string = Helper::dateToString(Carbon::parse('01.02.2025')); // $string = 'первое февраля две тысячи двадцать пятый год'
Enum
Работа с перечислениями
enumExists($value): bool
Проверяет на существование перечисления по значению и возвращает true/false
$boolean = MyEnum::enumExists('Name1'); // $boolean = true/false
enumFrom($value): ?BackedEnum
Возвращает найденное перечисление по имени, по значению или по перечислению
$enum = MyEnum::enumFrom('Name1'); // $enum = MyEnum::Name1
enumLabel($value): ?string
Возвращает описание перечисления (необходимо реализовать метод enumLabel)
$string = MyEnum::enumLabel(MyEnum::Name1); // $string = 'Name1 (value1)'
enumLabels($value, $label): array
Возвращает список перечислений для ресурса
$array = MyEnum::enumLabels(); // $array = [['value' => 'value1', 'label' => 'Описание 1']]
enumName($value): ?string
Возвращает ключ перечисления
$string = Helper::enumName(MyEnum::Name1); // $string = 'Name1'
enumNames($value): array
Возвращает имена ключей перечисления enum
$array = MyEnum::enumNames(); // $array = ['Name1']
enumRandom($value = null): ?BackedEnum
Возвращает случайное перечисление
$enum = Helper::enumRandom(MyEnum::class); // $enum = MyEnum::Name1
enumToArray($value): array
Возвращает массив ключей и значений enum
$array = MyEnum::enumToArray(); // $array = ['Name1' => 'value1']
enumValue($value): mixed
Возвращает значение перечисления
$mixed = Helper::enumValue(HelperEnumValueEnum::Name1); // $mixed = 'value1'
enumValues($value = null): array
Возвращает значения ключей перечисления enum
$array = MyEnum::enumValues(); // $array = ['value1']
Env
Работа с окружением
envDev(): bool
Проверяет окружение приложения на разработку и возвращает true/false
putenv('APP_ENV=Dev'); $boolean = Helper::envDev(); // $boolean = true
envLocal(): bool
Проверяет окружение приложения на локальное и возвращает true/false
putenv('APP_ENV=Local'); $boolean = Helper::envLocal(); // $boolean = true
envProd(): bool
Проверяет окружение приложения на боевое и возвращает true/false
putenv('APP_ENV=Prod'); $boolean = Helper::envProd(); // $boolean = true
envStage(): bool
Проверяет окружение приложения на пред боевое и возвращает true/false
putenv('APP_ENV=Stage'); $boolean = Helper::envStage(); // $boolean = true
envTest(): bool
Проверяет окружение приложения на тестовое и возвращает true/false
putenv('APP_ENV=Test'); $boolean = Helper::envTest(); // $boolean = true
envTesting(): bool
Проверяет окружение приложения на авто-тестирование и возвращает true/false
putenv('APP_ENV=Testing'); $boolean = Helper::envTesting(); // $boolean = true
Exception
Работа с исключениями
exceptionToString($value): string
Возвращает исключение в виде строки json
$string = Helper::exceptionToString(new Exception('message', 400)); // $string = '{"code": 400, ...}}'
Hash
Работа с хешами
hashXxh128($value): string
Возвращает xxh128 хеш значения
$string = Helper::hashXxh128('abc'); // $string = '06b05ab6733a618578af5f94892f3950'
Interval
Работа с интервалами
intervalAround($value, $min, $max): int
Возвращает число со смещением по кругу в заданном интервале
$integer = Helper::intervalAround(3 + 1, 1, 3); // $integer = 1 $integer = Helper::intervalAround(1 - 1, 1, 3); // $integer = 3
intervalBetween($value, ...$intervals): array
Проверяет значение на вхождение в интервал(ы)
$bool = (bool)Helper::intervalBetween(2, [1, 10]); // $bool = true $bool = (bool)Helper::intervalBetween(12, '1..10, 13..20'); // $bool = false $bool = (bool)Helper::intervalBetween('2025.01.02', '2025.01.01, 2025.01.03..2025.01.04'); // $bool = false $bool = (bool)Helper::intervalBetween('2025.01.02', ['2025.01.01', '2025.01.03']); // $bool = true
intervalCollection(...$intervals): array
Возвращает число со смещением по кругу в заданном интервале
$array = Helper::intervalCollection(1, 3); // $array = [['equal' => 1], ['equal' => 3]] $array = Helper::intervalCollection('1..3'); // $array = [['min' => '1', 'max' => '3']] $array = Helper::intervalCollection([1, 3], 5); // $array = [['min' => 1, 'max' => 3], ['equal' => 5]]
intervalOverlap(...$intervals): array
Проверяет пересечение интервалов
$bool = (bool)Helper::intervalOverlap([1, 3], [2, 4]); // $bool = true $bool = (bool)Helper::intervalOverlap('1..3', '2..4'); // $bool = false
Ip
Работа с ip адресами
ipInRange($value, ...$masks): array
Возвращает xxh128 хеш значения
$array = Helper::ipInRange('192.168.1.1', '192.168.1.0/24'); // $array = ['192.168.1.0/24']
Jwt
Работа с jwt токенами
jwtDecode($value, ...$masks): array
Возвращает массив с данными из декодированного jwt токена
$array = Helper::jwtDecode('eyJhbGciOiJTSEE1MTIiLCJ0eXAiOiJKV1QifQ.eyJpZCI6MX0.l8fbKNjJWSsZLjVfE5aUOpEhIqbMAxIcon8nZ8NYyPikf_AtjrrN0Y3cPTy1A0U3etLMCbZ6RE00FqFYLZBc7A'); // $array = ['header' => ['alg' => 'SHA512', 'typ' => 'JWT'], 'body' => ['id' => 1]]
jwtEncode($value, ...$masks): array
Возвращает строку с jwt токеном из закодированных данных
$string = Helper::jwtEncode(['id' => 1]); // $string = 'eyJhbGciOiJTSEE1MTIiLCJ0eXAiOiJKV1QifQ.eyJpZCI6MX0.l8fbKNjJWSsZLjVfE5aUOpEhIqbMAxIcon8nZ8NYyPikf_AtjrrN0Y3cPTy1A0U3etLMCbZ6RE00FqFYLZBc7A'
Number
Работа с числами
numberToString($value, $declension, $gender, $enumeration): string
Возвращает число прописью на русском языке с учетом склонения по падежу, роду и числительному перечислению
$string = Helper::numberToString(123.456); // $string = 'сто двадцать три'
Path
Работа с путями
pathClassName($value): string
Возвращает имя класса без namespace
$string = Helper::pathClassName('/test/Test.php'); // $string = 'Test'
pathRoot($value = null): string
Возвращает путь домашней папки
$string = Helper::pathRoot(); // $string = '/home/path'
Regexp
Работа с валидацией
regexpValidateAscii($value): bool
Проверяет значение строки на формат ascii (латинский алфавита и цифры)
$boolean = Helper::regexpValidateAscii('0-9 AZ az'); // $boolean = true
regexpValidateDate($value): bool
Проверяет значение строки на формат даты
$boolean = Helper::regexpValidateDate('01.01.2025'); // $boolean = true
regexpValidateEmail($value): bool
Проверяет значение строки на формат электронной почты
$boolean = Helper::regexpValidateEmail('Test.example_1@domain.com'); // $boolean = true
regexpValidateJson($value): bool
Проверяет значение строки на формат json
Helper::regexpValidateJson('{"a":1}'); // $boolean = true
regexpValidatePattern($value): bool
Проверяет значение строки на формат регулярного выражения
$boolean = Helper::regexpValidatePattern('/test/'); // $boolean = true
regexpValidatePhone($value): bool
Проверяет значение строки на формат номера телефона
$boolean = Helper::regexpValidatePhone('+79001234567'); // $boolean = true
regexpValidateUnicode($value): bool
Проверяет значение строки на формат юникода
$boolean = Helper::regexpValidateUnicode('01 AZ az АЯ ая 😀'); // $boolean = true
regexpValidateUuid($value): bool
Проверяет значение строки на формат идентификатора uuid
$boolean = Helper::regexpValidateUuid('04d19f50-2fab-417a-815d-306b6a6f67ec'); // $boolean = true
Size
Работа с размерами
sizeBytesToString($value): string
Возвращает размер в байтах как строку
$string = Helper::sizeBytesToString(1000); // $string = '1 Кб'
sizeStringToBytes($value): string
Возвращает размер в байтах из строки размера
$integer = Helper::sizeStringToBytes('1 Килобайт'); // $integer = 1000
String
Работа со строками
stringBreakByLength($value, $breakType, $partLengthMax, $firstPartLength): array
Разбивает текст на части указанной длины по словам или строкам и возвращает массив строк
$array = Helper::stringBreakByLength('Иванов Иван Иванович', HelperStringBreakTypeEnum::Word, 10); // $array = ['Иванов', 'Иван', 'Иванович']
stringChange(&$value, $change, $start): string
Заменяет на подстроку в строке с позиции start
$string = Helper::stringChange('abc', 'd', 2); // $string = 'abd' $string = Helper::stringChange('abcefg', 'xyz', -1); // $string = 'abcefxyz'
stringConcat($delimiter, ...$values): string
Соединяет значения values через разделитель delimiter
$string = Helper::stringConcat(' ', 'Иванов', 'Иван', 'Иванович'); // $string = 'Иванов Иван Иванович' $string = Helper::stringConcat(' ', ['Иванов', 'Иван', 'Иванович']); // $string = 'Иванов Иван Иванович'
stringCopy($value, $start, $length): string
Копирует подстроку из строки с позиции start длиной length
$string = Helper::stringCopy('abc', 1, 1); // $string = 'b' $string = Helper::stringCopy('abc', -2); // $string = 'bc'
stringCount($value, ...$searches): string
Возвращает количество найденных вхождений подстрок в строке
$integer = Helper::stringCount('abc', 'a'); // $integer = 1 $integer = Helper::stringCount('abc', ['a', 'b']); // $integer = 2
stringCut(&$value, $start, $length): string
Вырезает подстроку из строки с позиции start длиной length
$source = 'abc'; $string = Helper::stringCut($source, 1, 1); // $source = 'ac', $string = 'b'
stringDelete($value, $start, $length): string
Удаляет из строки с позиции start длиной length
$string = Helper::stringDelete('abc', 1, 1); // $string = 'ac' $string = Helper::stringDelete('abc', -2); // $string = 'a'
stringDeleteMultiples($value, ...$multiples): string
Возвращает строку значения удаляя последовательные повторы подстрок
$string = Helper::stringDeleteMultiples('abcabc', 'abc'); // $string = 'abc' $string = Helper::stringDeleteMultiples('a--bb', ['-', 'b']); // $string = 'a-b'
stringEnds($value, ...$searches): string
Проверяет конец строки на совпадение подстрок и возвращает найденную подстроку или null
$string = Helper::stringEnds('abc', 'c'); // $string = 'c'
stringLength($value): int
Возвращает длину строки
$integer = Helper::stringLength('123'); // $integer = 3
stringLower($value): string
Переводит строку в нижний регистр
$string = Helper::stringLower('ABC'); // $string = 'abc'
stringLowerFirst($value): string
Возвращает строку с первый символом в нижнем регистре
$string = Helper::stringLowerFirst('Abc'); // $string = 'abc'
stringLowerFirstAll($value): string
Возвращает строку со всеми словами в нижнем регистре
$string = Helper::stringLowerFirstAll('Abc def Ghi-Jkl_Mno'); // $string = 'abc def ghi-jkl_mno'
stringMerge(...$values): string
Объединяет значения в одну строку с заменой предыдущих символов
$string = Helper::stringMerge('abc', 'de'); // $string = 'dec'
stringPadPrefix($value, $prefix, $condition): string
Добавляет в начало строки префикс при выполнении условия condition
$string = Helper::stringPadPrefix('def', 'abc', true); // $string = 'abcdef'
stringPadSuffix($value, $suffix, $condition): string
Добавляет в конец строки суффикс при выполнении условия condition
$string = Helper::stringPadSuffix('abc', 'def', true); // $string = 'abcdef'
stringPaste(&$value, $paste, $start): string
Вставляет подстроку в строку с позиции start
$string = Helper::stringPaste('abc', 'd', 2); // $string = 'abdc'
stringPlural($value, $plurals, $includeValue): string
Возвращает число с числительным названием из массива с тремя вариантами для [0|5..9, 1, 2..4]
$string = Helper::stringPlural(1, ['штук', 'штука', 'штуки']); // $string = '1 штука'
stringPosAll($value, ...$searches): array
Возвращает массив всех позиций искомых подстрок найденных в строке
$array = Helper::stringPosAll('abcd', 'bc', 'd'); // $array = ['bc' => [1], 'd' => [3]]
stringPosAny($value, ...$searches): array
Возвращает массив позиции первой искомой подстроки найденной в строке
$array = Helper::stringPosAny('abcd', ['f', 'b', 'c']); // $array = ['b' => 1]
stringRandom($pattern): string
Возвращает случайную строку по шаблону регулярного выражения
$string = Helper::stringRandom('/[a-z]{10}/'); // $string = 'sfosdjocsh'
stringRepeat($value, $count): string
Возвращает повторяющуюся строку значения указанное количество раз
$string = Helper::stringRepeat('a', 3); // $string = 'aaa' $string = Helper::stringRepeat(1, 3); // $string = '111'
stringReplace($value, $searches, $replaces): string
Заменяет подстроки в строке
$string = Helper::stringReplace('abcd', 'd', 'x'); // $string = 'abcx' $string = Helper::stringReplace('abcd', ['d' => 'x']); // $string = 'abcx'
stringReverse($value): string
Возвращает реверсивную строку значения
$string = Helper::stringReverse('abc'); // $string = 'cba' $string = Helper::stringReverse(123); // $string = '321'
stringSearchAll($value, ...$searches): array
Возвращает массив всех искомых подстрок найденных в строке
$array = Helper::stringSearchAll('abcd', 'bc', 'd'); // $array = ['bc', 'd'] $array = Helper::stringSearchAll('Иванов Иван Иванович', ['*Иван*']); // $array = ['*Иван*']
stringSearchAny($value, ...$searches): array
Возвращает массив первой искомой подстроки найденной в строке
$string = Helper::stringSearchAny('abcd', 'bc'); // $string = ['bc'] $string = Helper::stringSearchAny('abcd', ['ab', 'bc']); // $string = ['ab'] $string = Helper::stringSearchAny('Иванов Иван Иванович', '*Иван*'); // $string = ['*Иван*']
stringSegment($value): string
Возвращает строку с разбиением слитных слов и цифр
$string = Helper::stringSegment('abc2defXyz'); // $string = 'abc 2 def Xyz'
stringSplit($value, $delimiter, $index, $cacheEnabled): array
Возвращает массив подстрок разбитых на части между разделителем в строке
$array = Helper::stringSplit('abc,,def/xyz', [',', '/']); // $array = ['abc', '', 'def', 'xyz']
stringStarts($value, ...$searches): string
Проверяет начало строки на совпадение подстрок и возвращает найденную подстроку
$string = Helper::stringStarts('abc', 'a'); // $string = 'a'
stringUpper($value): string
Переводит строку в верхний регистр
$string = Helper::stringUpper('abc'); // $string = 'ABC'
stringUpperFirst($value): string
Возвращает строку с первый символом в верхнем регистре
$string = Helper::stringUpperFirst('abc'); // $string = 'Abc'
stringUpperFirstAll($value): string
Возвращает строку со всеми словами в верхнем регистре
$string = Helper::stringUpperFirstAll('abc Def ghi-jkl_mno'); // $string = 'Abc Def Ghi-Jkl_Mno'
Telegram
Работа с сообщениями телеграм
telegramBreakMessage($value, $hasAttach): array
Разбивает текст сообщения на части для отправки в телеграм
$array = Helper::telegramBreakMessage('Иванов Иван Иванович', false); // $array = ['Иванов Иван Иванович']
Time
Работа со временем
timeBetweenDatesToArray($dateFrom, $dateTo): array
Возвращает массив периодов между датами
$array = Helper::timeBetweenDatesToArray('01.01.2025 00:00:00', '02.02.2026 01:02:03'); // $array = ['years' => 1, 'months' => 1, 'days' => 1, 'hours' => 1, 'minutes' => 2, 'seconds' => 3]
timeBetweenDatesToString($dateFrom, $dateTo, $withTime, $time24): array
Возвращает массив периодов между датами
$string = Helper::timeBetweenDatesToString('01.01.2025 00:00:00', '02.02.2026 01:02:03', true); // $string = '1 год 1 месяц 1 день 1 час 2 минуты 3 секунды'
timeSecondsToArray($value): array
Возвращает массив периодов из количества секунд
$array = Helper::timeSecondsToArray(1); // $array = ['years' => 0, 'days' => 0, 'hours' => 0, 'minutes' => 0, 'seconds' => 1, 'milliseconds' => 0]
timeSecondsToString($value, $withZero, $withMilliseconds, $pluralNames): array
Возвращает период из количества секунд в виде строки YDHM
$string = Helper::timeSecondsToString(123); // $string = '2 минуты 3 секунды'
Transform
Работа с трансформацией
transformToArray($value): array
Возвращает массив из значения
$array = Helper::transformToArray(['a', 'b']); // $array = ['a', 'b'] $array = Helper::transformToArray('a'); // $array = ['a']