Глоссарий
Словарь веб-разработчика
Визначення технічних термінів з PHP, DevOps, MySQL та AI — з прикладами коду та поясненнями простою мовою.
228
терминов
46
букв
U
Union и Intersection типы
Union types (PHP 8.0) позволяют объявить, что параметр или возвращаемое значение может быть одним из нескольких типов. Intersection types (PHP 8.1) — что значение должно реализовывать все указанные интерфейсы одновременно.
Union Types
function parse(string|int $id): User|null {
return User::find($id);
}
// PHP 8.0 также добавил: int|string, float|int и т.д.
// Специальные: mixed, never, void
Intersection Types
interface Serializable {}
interface Loggable {}
function process(Serializable&Loggable $obj): void {
// $obj гарантированно реализует оба интерфейса
}
DNF Types (PHP 8.2)
Disjunctive Normal Form — комбинация union и intersection: (Serializable&Loggable)|null.
Unit Testing
Unit test — автоматический тест, проверяющий наименьшую изолированную единицу кода (функцию, метод) в изоляции от внешних зависимостей. Быстро выполняется, легко локализует проблему.Свойства хорошего unit-теста (FIRST)Fast — выполняется за миллисекундыIndependent — не зависит от других тестовRepeatable — одинаковый результат каждый разSelf-validating — автоматически определяет успех/провалTimely — пишется вместе с кодом, а не послеAAA паттерн// Arrange — подготовить
$calc = new Calculator();
// Act — выполнить
$result = $calc->add(2, 3);
// Assert — проверить
assertEquals(5, $result);Моки и стабыДля изоляции от БД, API, файловой системы используют mock (имитация с проверкой вызовов) и stub (возвращает заданные данные без проверки). Популярные библиотеки: PHPUnit, Jest, pytest.
Unix-время (Timestamp)
Unix timestamp — количество секунд, прошедших с 1 января 1970 года 00:00:00 UTC. Универсальный, независимый от часового пояса формат для хранения и передачи моментов времени.
Почему удобно
Одно число вместо сложного объекта — легко сравнивать, хранить, передавать через API
Не зависит от часового пояса — конвертируй в локальное время на клиенте
Арифметика дат становится арифметикой чисел: разница в секундах, добавить 1 день = +86400
PHP
time(); // текущий Unix timestamp
strtotime('2025-01-01'); // строка → timestamp
date('Y-m-d', 1735689600); // timestamp → строка
// Carbon (рекомендовано)
Carbon::now()->timestamp;
Carbon::createFromTimestamp(1735689600)->toDateString();
Проблема 2038 года
32-битный signed int переполнится 19 января 2038 в 03:14:07 UTC. В PHP с 64-битными int — проблемы нет. Но в старых БД со столбцом TIMESTAMP (32-bit) — есть.
UUID
UUID (Universally Unique Identifier) — 128-битный идентификатор с исчезающе малой вероятностью коллизии. Выглядит как 550e8400-e29b-41d4-a716-446655440000. Заменяет последовательные числовые ID там, где они небезопасны или неудобны.Зачем вместо числового IDНе раскрывает количество записей в таблице (/users/1 vs /users/550e8400-…)Можно генерировать на клиенте или в распределённой системе без обращения к БДНет конфликтов при слиянии данных из нескольких СУБДВерсииUUID v4 — полностью случайный. Наиболее распространёнUUID v7 — включает timestamp, поэтому сортируется хронологически. Лучше для первичных ключей в БД (меньше фрагментации индекса)НедостатокUUID v4 в качестве первичного ключа InnoDB вызывает фрагментацию B-Tree индекса из-за случайного порядка вставки. UUID v7 или ULID решают эту проблему.