Структура Каталогу

Вступ

The стандартна структура 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 розміщує в групі проміжного програмного забезпечення 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. Однак з часом у каталозі app буде створено різноманітні інші каталоги, коли ви використовуватимете команди Artisan make для генерації класів. Наприклад, каталог app/Console не існуватиме, доки ви не виконаєте команду Artisan make:command для генерації класу команди.

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

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

Каталог Jobs

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

Каталог Listeners

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

Каталог Mail

Цей каталог не існує за замовчуванням, але буде створений для вас, якщо ви виконаєте команду Artisan make:mail. Каталог 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 містить об'єкти користувацьких правил валідації для вашого застосунку. Правила використовуються для інкапсуляції складної логіки валідації в простий об'єкт. Для отримання додаткової інформації перегляньте документацію з валідації.