Глоссарий

Словарь веб-разработчика

Визначення технічних термінів з PHP, DevOps, MySQL та AI — з прикладами коду та поясненнями простою мовою.

228 терминов
46 букв
А
Абстрактный класс
Абстрактный класс — класс, от которого нельзя создать экземпляр напрямую. Он определяет общую структуру и может содержать как реализованные методы, так и абстрактные (только сигнатура; реализация — в подклассе).Когда выбирать абстрактный класс vs интерфейсАбстрактный класс — когда подклассы имеют общий код (shared logic) и между ними отношение «является разновидностью» (is-a). Нельзя реализовать несколькоИнтерфейс — когда нужен контракт без реализации; класс может реализовывать несколько интерфейсовПримерabstract class Shape { abstract public function area(): float; public function describe(): string { return "Area: " . $this->area(); // общий код } } class Circle extends Shape { public function area(): float { return M_PI * $this->r ** 2; } }
Автомасштабирование
Автомасштабирование (Auto Scaling) — автоматическое изменение числа серверов или ресурсов в зависимости от нагрузки. При пиковых запросах — добавляются новые инстансы. При спаде — лишние отключаются. Платите только за нужную мощность.Горизонтальное vs ВертикальноеHorizontal scaling (scale out/in) — добавляем/удаляем инстансы. Масштабируется без ограничений; требует stateless-приложенияVertical scaling (scale up/down) — увеличиваем/уменьшаем мощность одного сервера (CPU, RAM). Проще, но есть пределМетрики для триггеровCPU: выше 70% → добавить инстансMemory: выше 80% → масштабироватьRPS / Queue depth — специфично для приложенияПроблема statefulАвтомасштабирование работает только для stateless-приложений. Сессии и кэш должны храниться во внешнем хранилище (Redis), а не в памяти процесса.
Адаптивный дизайн
Адаптивный дизайн (Responsive Design) — подход к вёрстке, при котором страница корректно отображается на любом размере экрана: от смартфона до большого монитора. ~60% интернет-трафика сейчас мобильный.Ключевые инструментыFluid Grid — относительные единицы (%, fr) вместо фиксированных пикселейFlexible Images — max-width: 100%, <picture> с разными src под разные размерыMedia Queries — CSS-правила, применяемые при определённой ширине экранаBreakpoints/* Mobile first */ .container { padding: 16px; } @media (min-width: 768px) { .container { padding: 24px; } } @media (min-width: 1280px) { .container { max-width: 1280px; margin: 0 auto; } }Mobile First vs Desktop FirstMobile First — базовые стили для мобильного, расширение для больших экранов (min-width). Рекомендуемый подход: заставляет думать о самом важном контенте.
Антипаттерны
Антипаттерн — распространённое «решение» проблемы, которое на первый взгляд выглядит логично, но на практике вредит: усложняет код, снижает производительность или создаёт новые проблемы. Распространённые антипаттерны God Object — класс, который знает и делает всё. Нарушает SRP. Признак: более 500 строк кода и 20+ методов Magic Numbers — числа без названия прямо в коде: if ($status === 3). Замени константами или enum Copy-Paste Programming — дублирование кода вместо абстракции. Нарушение DRY Premature Optimization — оптимизация до того, как измерено, где проблема Spaghetti Code — запутанный поток выполнения без чёткой структуры Golden Hammer — применение одного инструмента к любой задаче Lava Flow — устаревший код, который никто не трогает из страха что-то сломать N+1 Query — отдельный запрос для каждой записи в цикле
Атрибуты PHP (Attributes)
Атрибуты (PHP 8.0) — структурные метаданные, добавляемые к классам, методам, свойствам и параметрам. Заменили docblock-аннотации (@Route, @Inject) нативным синтаксисом, проверяемым статическим анализом. Синтаксис #[Attribute] class Route { public function __construct( public string $path, public string $method = 'GET', ) {} } #[Route('/users', 'GET')] #[Middleware(AuthMiddleware::class)] class UserController { #[Route('/users/{id}')] public function show(int $id): Response { ... } } Чтение атрибутов $ref = new ReflectionClass(UserController::class); $attrs = $ref->getAttributes(Route::class); foreach ($attrs as $attr) { $route = $attr->newInstance(); // Route('/users', 'GET') } Где используются DI-контейнеры, роутеры, ORM-маппинг, валидаторы, сериализаторы. Symfony и Doctrine активно используют атрибуты вместо XML/YAML конфигурации.