Глоссарий
Словарь веб-разработчика
Визначення технічних термінів з 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 конфигурации.