Concept Core
Вступ
Concept Core — це strict-typed PHP-движок (engine) для PHP 8.4+, побудований на PSR-стандартах. Він з'єднує маршрутизацію, DI, валідацію, доступ до БД, представлення та CLI в одну цілісну runtime-систему — і не нав'язує зайвих прихованих конвенцій.
Ця документація описує пакет Concept Core — фундамент для Concept Skeleton та власних застосунків. Concept Core — не CMS і не повноцінний monolith-framework: це ядро, на якому збираються features через компоненти та service providers.
Вперше з Concept?
Рекомендуємо почати з Встановлення, потім Налаштування, Конфігурація та Життєвий цикл запиту.
Чому Concept?
Concept Core дає зручності, схожі на framework, без ваги повного monolith — явна конфігурація, PSR-сумісність і модульна композиція замість «магії».
| Що отримуєте | Без Concept Core |
|---|---|
| Named routes, middleware, FormRequest, DTO casting | Кожен проєкт з нуля збирає половину framework |
| Illuminate Database (Eloquent, migrations, pagination) | Підключення всього Laravel лише заради ORM |
| Twig або Plates — на вибір | Lock-in на один templating engine |
| Component registry — Auth, ACL, CMS як пакети | Копіювання модулів між репозиторіями |
| PSR-7, PSR-11 container, PSR-15 middleware | Боротьба з legacy globals |
| Whoops у dev, безпечні fallback views у prod | Білі екрани та тихі збої |
Основні бібліотеки, які core з'єднує в один стек:
- League Container — впровадження залежностей
- League Route — HTTP-маршрутизація
- Rakit Validation — правила валідації через FormRequest
- Valinor — мапінг даних запиту в DTO
- Twig або Plates — шаблони
- Illuminate Database — Eloquent, migrations, pagination
Компоненти
Головна ідея Concept Core — компоненти: вертикальні модулі з власними маршрутами,
migrations, seeders, views, console commands та assets. Зареєструйте клас компонента в конфігурації —
і ComponentsServiceProvider підключить усе автоматично.
Детальніше: Концепція компонентів, Створення компонента.
Офіційна документація бібліотек
Concept Core інтегрує ці пакети; деталі API — у їхній документації:
| Бібліотека | Роль у Concept Core | Документація |
|---|---|---|
| League Container | DI, bindings, service providers | container.thephpleague.com |
| League Route | Маршрути, middleware, резолв контролерів | route.thephpleague.com |
| Laminas Diactoros | PSR-7 запити та відповіді | laminas-diactoros |
| Laminas HttpHandlerRunner | Відправка PSR-7 response у SAPI | laminas-httphandlerrunner |
| PSR-7 / PSR-11 / PSR-15 | HTTP messages, container, middleware | PSR-7, PSR-11, PSR-15 |
| Twig / Plates | Шаблони HTML | Twig, Plates |
| Rakit Validation | Правила валідації FormRequest | rakit/validation |
| Valinor | DTO mapping, casting route params | cuyz/valinor |
| Illuminate Database | Eloquent / Capsule, migrations | Eloquent |
| Symfony HttpFoundation | Сесія, flash messages | HttpFoundation |
| Symfony Console | CLI-команди (bin/console.php) |
Console |
| Monolog | Логування, query log | monolog/monolog |
| Whoops | Debug-сторінки помилок у dev | filp/whoops |
| Noodlehaus Config | PHP config files | hassankhan/config |
| phpdotenv | .env → конфіг |
vlucas/phpdotenv |
Вивчення Concept
Рекомендований шлях:
- Пройдіть розділ Початок роботи у цій документації.
- Клонуйте Concept Skeleton і запустіть landing page локально.
- Перегляньте вихідний код у
vendor/php-concept/coreабо в каталозіcode/coreцього репозиторію.