Глосарій
Словник веб-розробника
Визначення технічних термінів з PHP, DevOps, MySQL та AI — з прикладами коду та поясненнями простою мовою.
228
термінів
47
літер
А
Абстрактний клас
Абстрактний клас — клас, від якого не можна створити екземпляр безпосередньо. Він визначає загальну структуру і може містити як реалізовані методи, так і абстрактні (лише сигнатура, реалізація — у підкласі).Коли обирати абстрактний клас 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 конфігурації.