atlcom/helper

Atlcom Helper library

Fund package maintenance!
Yoomoney

v1.08 2025-04-07 12:27 UTC

This package is auto-updated.

Last update: 2025-04-07 12:28:18 UTC


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']