Глосарій
Словник веб-розробника
Визначення технічних термінів з PHP, DevOps, MySQL та AI — з прикладами коду та поясненнями простою мовою.
228
термінів
47
літер
З
Замикання (Closure)
Замикання (анонімна функція) — функція без імені, яку можна зберегти у змінну, передати як аргумент або повернути з іншої функції. Головна особливість — вона може «захопити» змінні зовнішнього scope.Де використовуєтьсяКолбеки в функціях типу array_map, usort, array_filterСтрілкові функції (fn() =>) — захоплюють зовнішні змінні автоматичноФункціональне програмування — функції вищого порядку, ліниві обчисленняОбробники подій і middleware-ланцюжкиЗахоплення змінних$multiplier = 3;
$fn = fn($x) => $x * $multiplier; // захоплено автоматично
$fn(5); // 15У звичайних замиканнях захоплення явне через use ($var). Для захоплення за посиланням — use (&$var).
Збережена процедура (Stored Procedure)
Збережена процедура — підпрограма зі SQL-логіки, що зберігається безпосередньо у СУБД і викликається по імені. На відміну від звичайного запиту — компілюється один раз, виконується швидше і може мати вхідні/вихідні параметри.
Приклад (MySQL)
DELIMITER $$
CREATE PROCEDURE GetUserOrders(IN userId INT)
BEGIN
SELECT o.id, o.total, o.status
FROM orders o
WHERE o.user_id = userId
ORDER BY o.created_at DESC;
END$$
DELIMITER ;
-- Виклик
CALL GetUserOrders(42);
Переваги
Логіка на рівні БД — не залежить від мови додатку
Менше трафіку між додатком і БД
Права доступу на рівні процедури, а не таблиці
Недоліки
Складно тестувати і версіонувати (не в Git)
Бізнес-логіка розпорошена між кодом і БД
Прив'язка до конкретної СУБД
Збирач сміття (Garbage Collection)
Garbage Collection (GC) — автоматичне звільнення пам'яті від об'єктів, які більше не використовуються. Замість ручного управління пам'яттю (malloc/free у C) — рантайм сам відстежує і прибирає недосяжні об'єкти.АлгоритмиReference Counting — лічильник посилань на об'єкт. При 0 — об'єкт видаляється. PHP, CPython. Проблема: кругові посиланняMark and Sweep — обходить граф об'єктів, позначає досяжні, видаляє непозначені. Java, Go, JavaScriptGenerational GC — молоді об'єкти (короткоживучі) збираються частіше за старі. JVM, .NET, V8PHP і GCPHP використовує reference counting + cyclic garbage collector. Кругові посилання (A → B → A) не звільняються reference counting — їх прибирає cyclic GC. gc_collect_cycles() — ручний запуск.Вплив на продуктивністьGC-паузи можуть впливати на latency. В Go GC concurrent — паузи < 1 мс. В старих JVM GC-паузи були секундами.
Зв'язний список
Зв'язний список — лінійна структура даних, де кожен елемент (вузол) містить значення і вказівник на наступний вузол. На відміну від масиву — елементи не зберігаються поруч у пам'яті.
Типи
Singly Linked — кожен вузол → наступний. Обхід лише вперед
Doubly Linked — кожен вузол → наступний і попередній. Обхід в обох напрямках
Circular — останній вузол → перший
Порівняння з масивом
Вставка/видалення на початку: список O(1) → масив O(n) (зсув)
Вставка/видалення в середині: список O(n) (пошук) → масив O(n) (зсув)
Доступ за індексом: список O(n) → масив O(1)
Пам'ять: список витрачає більше (вказівники)
У PHP
PHP-масиви є хеш-таблицями — не зв'язними списками. Для справжнього зв'язного списку — SplDoublyLinkedList або власна реалізація. На практиці рідко потрібен.
Змінні середовища (.env)
Змінні середовища — конфігурація поза кодом: паролі, ключі API, URL бази даних. Зберігаються в середовищі ОС або файлі .env. Код читає їх у runtime, а не хардкодить прямо в сирцях.Чому окремо від кодуОдна кодова база — багато оточень (local / staging / production) з різними значеннями.env не потрапляє в Git (є в .gitignore) — секрети не витікаютьЗручна заміна конфігурації без зміни коду і перезбиранняПрактикаТримайте в репозиторії .env.example з усіма ключами але без значень — нові розробники знатимуть, що налаштувати. У CI/CD інжектуйте змінні через UI провайдера, не через файли.12-Factor AppЗберігання конфігурації у змінних середовища — один із принципів 12-Factor App — методології побудови масштабованих хмарних застосунків.
Зовнішній ключ (Foreign Key)
Зовнішній ключ — обмеження БД, що гарантує цілісність зв'язку між таблицями. Колонка дочірньої таблиці може містити лише значення, що існують у батьківській. База даних відхилить вставку або оновлення, що порушить цей зв'язок.ОголошенняCREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE
ON UPDATE RESTRICT
);Стратегії ON DELETE / ON UPDATECASCADE — при видаленні батька видаляються і всі дочірні записиRESTRICT / NO ACTION — заборонити видалення батька, якщо є дочірніSET NULL — встановити дочірнє поле в NULLSET DEFAULT — встановити значення за замовчуваннямPerformanceMySQL/InnoDB автоматично індексує FK-колонку. При великих таблицях перевірка FK на кожній вставці додає ~5–10% накладних витрат.