<? phpukraine ДОКУМЕНТАЦІЯ
Пошук по платформі
Документація українською

Переклад силами спільноти. Кожен розділ показує стан готовності — недоперекладене відкрито помічене, а не приховане.

ВЕРСІЯ
АКТУАЛЬНА Актуальний реліз. Переклад наздоганяє оригінал — розділи з низьким відсотком позначені у змісті.
ПОЧАТОК · ПЕРЕКЛАДЕНО оновлено 3 вересня 2026

Структура застосунку — Laravel

Вступ

Типова структура застосунку Laravel створена, щоб бути чудовою відправною точкою і для великих, і для малих застосунків. Але ви вільні організовувати свій застосунок так, як вам подобається. Laravel майже не накладає обмежень на те, де саме розташований той чи інший клас, — за умови, що Composer може його автозавантажити.

Коренева тека

Тека App

Тека app містить основний код вашого застосунку. Ми розглянемо цю теку детальніше трохи згодом; утім, майже всі класи вашого застосунку будуть саме в ній.

Тека Bootstrap

Тека bootstrap містить файл app.php, який завантажує (bootstrap) фреймворк. Ця тека також містить теку cache, у якій лежать згенеровані фреймворком файли для оптимізації продуктивності, як-от файли кешу маршрутів і сервісів.

Тека Config

Тека config, як випливає з назви, містить усі конфігураційні файли вашого застосунку. Дуже слушна ідея — прочитати всі ці файли й ознайомитися з усіма доступними вам опціями.

Тека Database

Тека database містить міграції бази даних, фабрики моделей і сідери. За бажання ви також можете використовувати цю теку для зберігання бази даних SQLite.

Тека Public

Тека public містить файл index.php, який є точкою входу для всіх запитів, що надходять до вашого застосунку, і налаштовує автозавантаження. Ця тека також містить ваші ассети (assets), як-от зображення, JavaScript і CSS.

Тека Resources

Тека resources містить ваші представлення (views), а також сирі, нескомпільовані ассети, такі як CSS чи JavaScript.

Тека Routes

Тека routes містить усі визначення маршрутів вашого застосунку. За замовчуванням Laravel містить два файли маршрутів: web.php і console.php.

Файл web.php містить маршрути, які Laravel розміщує в групі middleware web, що забезпечує стан сесії, захист від CSRF і шифрування cookie. Якщо ваш застосунок не пропонує stateless RESTful API, то, найімовірніше, усі ваші маршрути будуть визначені у файлі web.php.

У файлі console.php ви можете визначати всі свої консольні команди на основі замикань. Кожне замикання привʼязується до екземпляра команди, що дає простий підхід до взаємодії з методами вводу-виводу кожної команди. Хоча цей файл не визначає HTTP-маршрутів, він визначає консольні точки входу (маршрути) до вашого застосунку. Також у файлі console.php ви можете планувати завдання.

За бажання ви можете встановити додаткові файли маршрутів для API-маршрутів (api.php) і каналів мовлення (channels.php) за допомогою Artisan-команд install:api та install:broadcasting.

Файл api.php містить маршрути, які призначені бути stateless, тож запити, що потрапляють до застосунку через ці маршрути, мають автентифікуватися через токени і не матимуть доступу до стану сесії.

У файлі channels.php ви можете зареєструвати всі канали мовлення подій, які підтримує ваш застосунок.

Тека Storage

Тека storage містить ваші логи, скомпільовані шаблони Blade, файлові сесії, файлові кеші та інші файли, згенеровані фреймворком. Ця тека поділена на теки app, framework і logs. Теку app можна використовувати для зберігання будь-яких файлів, згенерованих вашим застосунком. Тека framework використовується для зберігання згенерованих фреймворком файлів і кешів. Нарешті, тека logs містить файли логів вашого застосунку.

Теку storage/app/public можна використовувати для зберігання згенерованих користувачами файлів, як-от аватарів профілю, які мають бути публічно доступними. Вам слід створити символічне посилання за адресою public/storage, яке вказує на цю теку. Створити посилання можна за допомогою Artisan-команди php artisan storage:link.

Тека Tests

Тека tests містить ваші автоматизовані тести. З коробки надаються приклади модульних (unit) і функціональних (feature) тестів для Pest чи PHPUnit. Кожен клас тесту має мати суфікс Test. Запустити тести можна командами /vendor/bin/pest або /vendor/bin/phpunit. Або, якщо ви хочете детальніше й гарніше представлення результатів тестів, ви можете запустити тести Artisan-командою php artisan test.

Тека Vendor

Тека vendor містить ваші залежності Composer.

Тека App

Більша частина вашого застосунку розміщується в теці app. За замовчуванням ця тека належить простору імен App і автозавантажується Composer за стандартом автозавантаження PSR-4.

За замовчуванням тека app містить теки Http, Models і Providers. Проте з часом усередині теки app буде згенеровано низку інших тек, у міру того як ви використовуватимете Artisan-команди make для генерації класів. Наприклад, тека app/Console не існуватиме, доки ви не виконаєте Artisan-команду make:command для генерації класу команди.

Теки Console і Http докладніше пояснюються у відповідних розділах нижче, але сприймайте теки Console і Http як такі, що надають API до ядра вашого застосунку. Протокол HTTP і CLI — це обидва механізми взаємодії з вашим застосунком, але вони фактично не містять логіки застосунку. Іншими словами, це два способи віддавати команди вашому застосунку. Тека Console містить усі ваші Artisan-команди, тоді як тека Http містить ваші контролери, middleware і запити.

Примітка Багато класів у теці app можна згенерувати через Artisan за допомогою команд. Щоб переглянути доступні команди, виконайте в терміналі команду php artisan list make.

Тека Broadcasting

Тека Broadcasting містить усі класи каналів мовлення вашого застосунку. Ці класи генеруються командою make:channel. Ця тека не існує за замовчуванням, але буде створена для вас, коли ви створите свій перший канал. Щоб дізнатися більше про канали, перегляньте документацію з мовлення подій.

Тека Console

Тека Console містить усі кастомні Artisan-команди вашого застосунку. Ці команди можна згенерувати за допомогою команди make:command.

Тека Events

Ця тека не існує за замовчуванням, але буде створена для вас Artisan-командами event:generate і make:event. Тека Events містить класи подій. Події можна використовувати, щоб сповіщати інші частини вашого застосунку про те, що сталася певна дія, забезпечуючи значну гнучкість і послаблення звʼязності.

Тека Exceptions

Тека Exceptions містить усі кастомні винятки вашого застосунку. Ці винятки можна згенерувати за допомогою команди make:exception.

Тека Http

Тека Http містить ваші контролери, middleware і form request. Майже вся логіка обробки запитів, що надходять до вашого застосунку, буде розміщена в цій теці.

Тека Jobs

Ця тека не існує за замовчуванням, але буде створена для вас, якщо ви виконаєте Artisan-команду make:job. Тека Jobs містить завдання (jobs), які можна ставити в чергу, для вашого застосунку. Завдання можуть ставитися вашим застосунком у чергу або виконуватися синхронно в межах поточного життєвого циклу запиту. Завдання, які виконуються синхронно під час поточного запиту, іноді називають «командами», оскільки вони є реалізацією патерну «Команда».

Тека Listeners

Ця тека не існує за замовчуванням, але буде створена для вас, якщо ви виконаєте Artisan-команди event:generate або make:listener. Тека Listeners містить класи, які обробляють ваші події. Слухачі подій отримують екземпляр події й виконують логіку у відповідь на її спрацювання. Наприклад, подію UserRegistered може обробляти слухач SendWelcomeEmail.

Тека Mail

Ця тека не існує за замовчуванням, але буде створена для вас, якщо ви виконаєте Artisan-команду make:mail. Тека Mail містить усі ваші класи, що представляють електронні листи, які надсилає ваш застосунок. Обʼєкти пошти дозволяють інкапсулювати всю логіку побудови листа в одному простому класі, який можна надіслати методом Mail::send.

Тека Models

Тека Models містить усі ваші класи моделей Eloquent. ORM Eloquent, що входить до Laravel, надає гарну, просту реалізацію ActiveRecord для роботи з вашою базою даних. Кожній таблиці бази даних відповідає «Модель», яка використовується для взаємодії з цією таблицею. Моделі дозволяють робити запити до даних у ваших таблицях, а також вставляти нові записи в таблицю.

Тека Notifications

Ця тека не існує за замовчуванням, але буде створена для вас, якщо ви виконаєте Artisan-команду make:notification. Тека Notifications містить усі «транзакційні» сповіщення, які надсилає ваш застосунок, наприклад прості сповіщення про події, що відбуваються всередині вашого застосунку. Функціонал сповіщень Laravel абстрагує надсилання сповіщень через різні драйвери, такі як електронна пошта, Slack, SMS, або зі збереженням у базі даних.

Тека Policies

Ця тека не існує за замовчуванням, але буде створена для вас, якщо ви виконаєте Artisan-команду make:policy. Тека Policies містить класи політик авторизації (authorization policy) вашого застосунку. Політики використовуються, щоб визначити, чи може користувач виконати певну дію щодо ресурсу.

Тека Providers

Тека Providers містить усі сервіс-провайдери вашого застосунку. Сервіс-провайдери завантажують (bootstrap) ваш застосунок, привʼязуючи сервіси в контейнері сервісів, реєструючи події або виконуючи будь-які інші завдання для підготовки вашого застосунку до вхідних запитів.

У свіжому застосунку Laravel ця тека вже міститиме AppServiceProvider. Ви вільні додавати до неї власні провайдери за потреби.

Тека Rules

Ця тека не існує за замовчуванням, але буде створена для вас, якщо ви виконаєте Artisan-команду make:rule. Тека Rules містить обʼєкти кастомних правил валідації вашого застосунку. Правила використовуються, щоб інкапсулювати складну логіку валідації в простому обʼєкті. Докладніше див. у документації з валідації.

ЯК ЦЯ СТОРІНКА ВИГЛЯДАЄ В ПОШУКУ
phpukraine.com/docs/laravel/structure
Структура застосунку — Laravel документація українською
Структура застосунку у Laravel 13.x: переклад офіційної документації українською. Оновлено 3 вересня 2026. Приклади коду, пояснення та посилання на питання зі співбесід.
Переклад робить спільнота

Виправити терміни, дописати розділ або взяти нову главу може кожен. Термінологію узгоджуємо в глосарії, щоб переклад лишався однорідним.

1
Перекладачів
90%
Готовності
0
Вільних розділів
Глосарій термінів