Версія фреймворка: 8.x

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

Вступ

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

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

Каталог програм

appкаталог містить основний код вашої програми. Незабаром ми вивчимо цей каталог більш докладно; однак майже всі класи вашої програми будуть у цьому каталозі.

Каталог Bootstrap

bootstrapкаталог міститьapp.phpфайл, який завантажує фреймворк. Цей каталог також містить acacheкаталог, що містить файли, створені в рамках фреймворку для оптимізації продуктивності, такі як файли кешу маршрутів та служб.

Каталог конфігурації

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

Каталог баз даних

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

Публічний довідник

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

Каталог ресурсів

resourcesКаталог містить ваші перегляди, а також ваші необроблені, некомпільовані ресурси, такі як CSS або JavaScript. У цьому каталозі також зберігаються всі ваші мовні файли.

Каталог маршрутів

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

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

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

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

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

Каталог зберігання

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

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

Довідник тестів

testsкаталог містить ваші автоматизовані тести. ПрикладPHPUnitтест надається з коробки. Кожен тестовий клас повинен мати суфікс із словомTest. Ви можете запускати свої тести за допомогоюphpunitабоphp vendor/bin/phpunitкоманди.

Каталог постачальників

vendorкаталог містить вашКомпозиторзалежності.

Каталог програм

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

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

Безліч інших каталогів буде сформовано всерединіapp, коли ви використовуєтеmakeArtisan команди для створення класів. Так, наприклад,app/Jobsкаталог не буде існувати, доки ви не виконаєтеmake:jobКоманда ремісника для створення робочого класу.

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

Каталог мовлення

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

Каталог консолі

Consoleкаталог містить усі користувацькі команди Artisan для вашої програми. Ці команди можуть бути сформовані за допомогоюmake:commandкоманди. У цьому каталозі також знаходиться ваше ядро ​​консолі, де зареєстровано власні команди Artisan та вашезаплановані завданнявизначені.

Каталог подій

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

Каталог винятків

Exceptionsкаталог містить обробник винятків вашої програми, а також є гарним місцем для розміщення будь-яких винятків, викликаних вашою програмою. Якщо ви хочете налаштувати спосіб реєстрації або відображення ваших винятків, вам слід змінити файлHandlerклас у цьому каталозі.

Каталог Http

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

Каталог вакансій

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

Каталог слухачів

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

Поштовий каталог

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

Каталог моделей

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

Каталог сповіщень

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

Довідник політик

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

Каталог постачальників

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

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

Каталог правил

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