Download the PHP package maksde/support without Composer
On this page you can find all versions of the php package maksde/support. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package support
Помощник для Laravel
Содержание
- Установка
- Правила валидации для форм
- EmailValidate - валидация почты
- PhoneValidate - валидация российского телефона
- PhoneInternationalValidate - валидация международного телефона
- NameValidate - валидация имени/фамилии/отчества
- QuantityValidate - валидация количества
- DateValidate - валидация даты
- TimeValidate - валидация времени
- DateTimeValidate - валидация даты и времени
- FileValidate - валидация файлов (расширение, MIME, размер, magic bytes)
- Форматирование даты и времени (TemporalFormat)
- Вспомогательные функции
- Тестирование
Установка
Установить пакет с помощью Composer:
Опубликовать файлы конфигурации:
Опубликовать файлы перевода:
Правила валидации для форм
Пакет предоставляет набор валидаторов для проверки различных типов данных с детальными сообщениями об ошибках на русском и английском языках.
EmailValidate
Валидация адреса электронной почты с поддержкой латиницы и кириллицы.
Пример использования:
Параметры конструктора:
tlds(list<string>|null) — допустимые доменные зоны;null— любая из спискаDomainZone(1300+ TLD)
Проверка TLD:
- Без параметра — TLD должен существовать в
DomainZone - С параметром
tlds— TLD должен входить в переданный список (регистр не важен)
Регулярное выражение:
Что проверяет регулярное выражение:
-
Структура и базовые правила:
(?!\.)- не должен начинаться с точки(?!.*\.\.)- не должно быть двух точек подряд (в любом месте)@- обязательный разделитель между локальной и доменной частью
-
Локальная часть (до @):
([A-Za-zА-Яа-яЁё0-9_'+\-\.]*)- может содержать:- Латинские буквы:
A-Z,a-z - Кириллические буквы:
А-Я,а-я,Ё,ё - Цифры:
0-9 - Специальные символы:
_,',+,-,.
- Латинские буквы:
([A-Za-zА-Яа-яЁё0-9_+-])- должна заканчиваться буквой, цифрой или_,+,-(НЕ точкой)
-
Доменная часть (после @):
([A-Za-zА-Яа-яЁё0-9]([A-Za-zА-Яа-яЁё0-9-]*[A-Za-zА-Яа-яЁё0-9])?\.)+- каждый уровень домена:- Должен начинаться с буквы или цифры
- Должен заканчиваться буквой или цифрой (НЕ дефисом)
- Может содержать дефисы только в середине
- Заканчивается точкой (для разделения уровней)
- Может повторяться для поддоменов (
mail.example.com)
-
Доменная зона (TLD):
[A-Za-zА-Яа-яЁё]{2,}- минимум 2 буквы (латиница или кириллица)
-
Дополнительные проверки длины:
- Общая длина email ≤ 255 символов
- Локальная часть ≤ 64 символа
- Доменная часть ≤ 253 символа
- Проверка валидности доменной зоны (TLD):
- Без параметра
tlds— проверка через классDomainZone(1300+ официальных TLD, включая.рф,.бел,.срб,.укр,.рус) - С параметром
tlds— TLD должен входить в переданный список
- Без параметра
📖 Детальная документация:
- Анализ валидации Email - разбор регулярного выражения и результаты тестирования
- Тестовые случаи Email - полный список валидных и невалидных email (~350 примеров)
PhoneValidate
Валидация российского номера телефона.
Пример использования:
Проверки:
- Должен начинаться с
+7 - Содержать ровно 11 цифр (настраивается в конфиге)
- Формат:
+71234567890
Типы ошибок:
phone.start- номер не начинается с +7phone.length- неверное количество цифрphone.format- неверный формат номера
PhoneInternationalValidate
Валидация международного номера телефона.
Пример использования:
Проверки:
- Должен начинаться с
+ - Содержать от 7 до 15 цифр (настраивается в конфиге)
- Формат:
+1234567890
Типы ошибок:
phone_international.start- номер не начинается с +phone_international.min- меньше минимального количества цифрphone_international.max- больше максимального количества цифрphone_international.format- неверный формат номера
NameValidate
Валидация имени, фамилии, отчества.
Пример использования:
Проверки:
- Максимальная длина: 50 символов (настраивается в конфиге)
- Разрешены: кириллица, латиница, дефис
-, пробел, апостроф' - Запрещены: цифры и другие спецсимволы
- Не может содержать только пробелы, дефисы или апострофы
Типы ошибок:
name.max_length- превышена максимальная длинаname.invalid_characters- недопустимые символыname.empty- содержит только пробелы/дефисы/апострофы
QuantityValidate
Валидация количества (целое число с возможностью указания минимального и максимального значения).
Пример использования:
Проверки:
- Должно быть целым числом
- Не должно содержать символы
e,E,+,- - Если указан
min- значение должно быть >= min (по умолчанию min = 0) - Если указан
max- значение должно быть <= max (по умолчанию без ограничения)
Параметры конструктора:
min(int|null) - минимальное значение (по умолчанию0). Еслиnull, то минимальное ограничение отсутствуетmax(int|null) - максимальное значение (по умолчаниюnull- без ограничения)
Типы ошибок:
quantity.forbidden_characters- содержит запрещенные символы (e, E, +, -)quantity.not_integer- не является целым числомquantity.min- значение меньше минимальногоquantity.max- значение больше максимального
DateValidate
Валидация даты с возможностью ограничения по времени (прошлое/будущее).
Пример использования:
Проверки:
- Дата должна соответствовать формату из конфига (по умолчанию
Y-m-d) - Формат:
2025-04-16 - Если указан параметр
'future'- дата должна быть в будущем (строго больше опорной) - Если указан параметр
'past'- дата должна быть в прошлом (строго меньше опорной) - Если параметр не указан (
null) - любая корректная дата допустима
Параметры конструктора:
timeConstraint(string|null) - ограничение по времени:'future'(будущее),'past'(прошлое),null(любая дата)referenceDate(string|null) - опорная дата для сравнения (форматY-m-d). Еслиnull, используется текущая дата
Типы ошибок:
date.format- неверный формат датыdate.future- дата не в будущем (при использовании ограничения'future')date.past- дата не в прошлом (при использовании ограничения'past')
TimeValidate
Валидация времени с возможностью ограничения (прошлое/будущее относительно опорного момента).
Пример использования:
Проверки:
- Время должно соответствовать формату из конфига (по умолчанию
H:i:s) - Формат:
23:59:59 - Если указан параметр
'future'- время должно быть в будущем (строго больше опорного времени) - Если указан параметр
'past'- время должно быть в прошлом (строго меньше опорного времени) - Если параметр не указан (
null) - любое корректное время допустимо
Параметры конструктора:
timeConstraint(string|null) - ограничение по времени:'future'(будущее),'past'(прошлое),null(любое время)referenceTime(string|null) - опорное время для сравнения (форматH:i:s). Еслиnull, используется текущее время
Типы ошибок:
time.format- неверный формат времениtime.future- время не в будущем (при использовании ограничения'future')time.past- время не в прошлом (при использовании ограничения'past')
DateTimeValidate
Валидация даты и времени с возможностью ограничения (прошлое/будущее).
Пример использования:
Проверки:
- Дата и время должны соответствовать формату из конфига (по умолчанию
Y-m-d H:i:s) - Формат:
2025-04-16 23:59:59 - Если указан параметр
'future'- дата и время должны быть в будущем (строго больше опорного момента) - Если указан параметр
'past'- дата и время должны быть в прошлом (строго меньше опорного момента) - Если параметр не указан (
null) - любые корректные дата и время допустимы
Параметры конструктора:
timeConstraint(string|null) - ограничение по времени:'future'(будущее),'past'(прошлое),null(любая дата и время)referenceDateTime(string|null) - опорная дата-время для сравнения (форматY-m-d H:i:s). Еслиnull, используется текущий момент
Типы ошибок:
datetime.format- неверный формат даты и времениdatetime.future- дата и время не в будущем (при использовании ограничения'future')datetime.past- дата и время не в прошлом (при использовании ограничения'past')
FileValidate
Единое правило валидации загружаемых файлов. Проверяет расширение, MIME-тип, размер и сигнатуру (magic bytes) по реестру FileExtensionMap.
Пример использования:
Проверки:
- Расширение файла — из конфига типа или переданного списка
- MIME-тип — из реестра
Maksde\Support\Validation\FileExtensionRegistry(по расширению) - Размер — не больше
max_size(KB) - Сигнатура — magic bytes для ~55 форматов (изображения, видео, аудио, документы, архивы, шрифты)
Параметры конструктора:
type(string|null) — ключ вsupport.validate.file(image,video,document, …)extensions(array|null) — кастомный список ext (обязателен вместе сmaxSize, еслиtypeне задан)mimes(array|null) — override MIME; по умолчанию из реестраmaxSize(int|null) — KB; для типа берётся из конфига, для кастомного набора обязателен
Настройки в конфиге (MIME и сигнатуры — в коде, не в конфиге):
Типы ошибок:
file.extension— недопустимое расширениеfile.mime— MIME не соответствует расширениюfile.size— превышен размерfile.signature— содержимое не совпадает с расширением (подделка)
Breaking change 4.0: удалены ImageValidate, VideoValidate, DocumentValidate.
Форматирование даты и времени (TemporalFormat)
Класс Maksde\Support\Formation\TemporalFormat переводит дату/время между timezone и форматами при сохранении в БД и при выводе (в т.ч. в API). Форматы задаются в конфиге: support.storage.format.*, support.view.format.*, support.api.format.*.
Сохранение (forStorage)
Подготовка значения к записи в БД. Для date применяется только форматирование (календарная дата без timezone). Для time и datetime значение из указанной timezone переводится в UTC.
Сигнатура: forStorage(?string $value, 'date'|'time'|'datetime' $type, string $fromTimezone = 'UTC'): ?string
Вывод (forOutput)
Подготовка значения из БД к показу или к отдаче в API. Для date — только форматирование. Для time и datetime — перевод из UTC в целевую timezone и формат.
Сигнатура: forOutput(?string $value, 'date'|'time'|'datetime' $type, string $toTimezone = 'UTC', ?string $format = null): ?string
Для типа time значение в БД хранится как время с якорной датой; при разборе используется та же логика, что и в forStorage.
Вспомогательные функции
urlFront($path)
Формирование полного пути к файлу из storage для использования на фронтенде.
Пример использования:
Тестирование
Пакет содержит полный набор unit-тестов для всех валидаторов.
Запуск тестов
Структура тестов
Подробнее о тестах см. в tests/README.md.
Лицензия
Этот пакет является открытым программным обеспечением, лицензированным по лицензии MIT.