Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти
Інше
Події Про нас

Структура каталогів

Вступ

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

Кореневий каталог

Каталог App

Каталог app містить основний код вашого застосунку. Незабаром ми розглянемо його докладніше, але майже всі класи вашого застосунку будуть саме тут.

Каталог Bootstrap

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

Каталог Config

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

Каталог Database

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

Каталог Public

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

Каталог Resources

Каталог resources містить ваші представлення, а також вихідні, нескомпільовані ресурси на кшталт CSS чи JavaScript.

Каталог Routes

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

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

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

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

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

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

Каталог Storage

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

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

Каталог Tests

Каталог tests містить ваші автоматизовані тести. Приклади модульних і функціональних тестів 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. Однак із часом усередині нього з'являтимуться й інші каталоги, у міру того як ви використовуватимете команди Artisan make для генерації класів. Наприклад, каталог app/Console не існуватиме, доки ви не виконаєте команду Artisan make:command для створення класу команди.

Каталоги 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 та запити форм. Майже вся логіка обробки запитів, що надходять до вашого застосунку, розміщується саме тут.

Каталог Jobs

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

Каталог Listeners

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

Каталог Mail

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

Каталог Models

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

Каталог Notifications

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

Каталог Policies

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

Каталог Providers

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

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

Каталог Rules

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