Установка Laravel и структура проекта
Установка Laravel занимает одну команду, а понимание структуры каталогов — ключ к тому, чтобы не потеряться в проекте.
Суть: проект ставится через Composer, а каждая папка отвечает за свою зону ответственности — код в
app/, маршруты вroutes/, шаблоны вresources/, настройки вconfig/.
Прежде чем писать код, нужно поднять рабочий проект. Laravel ставится менеджером зависимостей Composer — это инструмент, который скачивает фреймворк и все его библиотеки. После установки у вас появляется десяток каталогов, и поначалу легко растеряться. Но структура логична: разобравшись один раз, вы будете точно знать, куда класть каждый файл.
Laravel 11 (2024 год) принёс облегчённую структуру: исчезли файлы app/Http/Kernel.php и app/Console/Kernel.php, а вся их конфигурация переехала в один файл bootstrap/app.php. Это сделало проект чище и понятнее для новичков.
Установка
Для старта нужны PHP 8.2+ и Composer. Создаём проект одной командой:
# через установщик laravel
composer global require laravel/installer
laravel new myshop
# или напрямую через composer
composer create-project laravel/laravel myshop
# запуск локального сервера
cd myshop
php artisan serveПосле php artisan serve приложение доступно на http://127.0.0.1:8000. Команда artisan — это «швейцарский нож» Laravel: с её помощью генерируют классы, запускают миграции, чистят кэш и многое другое.
Структура каталогов
Вот карта основных папок, с которыми вы будете работать каждый день:
myshop/ |-- app/ <- ваш PHP-код (модели, контроллеры) | |-- Http/Controllers/ | '-- Models/ |-- bootstrap/ | '-- app.php <- конфигурация приложения (L11) |-- config/ <- настройки (база, почта, кэш) |-- database/ | |-- migrations/ <- версии структуры БД | '-- seeders/ <- наполнение тестовыми данными |-- public/ <- точка входа index.php, ассеты |-- resources/ | '-- views/ <- шаблоны Blade |-- routes/ | |-- web.php <- веб-маршруты | '-- console.php <- команды и расписание '-- .env <- секреты окружения
Как работает под капотом
Файл .env хранит настройки окружения: пароль к базе, ключ приложения, режим отладки. Их нельзя коммитить в git — они у каждого разработчика свои. Файлы из config/ читают значения из .env через хелпер env(). А bootstrap/app.php в Laravel 11 — это центр сборки приложения: здесь подключаются маршруты, регистрируется middleware и настраивается обработка ошибок.
<?php
// bootstrap/app.php (Laravel 11) — единый центр конфигурации
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
)
->withMiddleware(function (Middleware $middleware) {
// здесь регистрируют свои middleware
})
->withExceptions(function (Exceptions $exceptions) {
// здесь настраивают обработку ошибок
})->create();Чтобы прочувствовать идею «у каждой папки своя роль», смоделируем простой роутинг конфигурации на Python — словарь отвечает за то, какой раздел проекта обрабатывает какую задачу.
Попробуй сам ▶
# Карта ответственности каталогов Laravel
structure = {
'routes/': 'какой URL -> какой код',
'app/': 'модели и контроллеры (логика)',
'resources/': 'шаблоны Blade (внешний вид)',
'database/': 'миграции и сидеры',
'config/': 'настройки приложения',
}
task = 'хочу изменить вид страницы'
for folder, role in structure.items():
mark = '<==' if folder == 'resources/' else ''
print(f'{folder:12} {role} {mark}')
print('Вывод:', task, '-> правим resources/')
Частые ошибки
- Коммитить
.envв git. Это утечка паролей. Файл всегда в.gitignore; для команды есть.env.example. - Открывать сайт по пути к корню проекта. Веб-сервер должен смотреть только в папку
public/, иначе любой увидит ваш код. - Забыть
php artisan key:generate. Без ключа приложения шифрование и сессии не работают (приlaravel newон создаётся автоматически).
Best practices
- Держите секреты только в
.env, а в коде читайте их черезconfig(), а не напрямую черезenv(). - Изучите команды
php artisan list— там десятки полезных генераторов. - Не правьте файлы фреймворка в
vendor/— они перезаписываются при обновлении.
Итог: проект ставится одной командой Composer, а понятная структура каталогов помогает сразу знать, куда положить код, шаблон или настройку. Дальше разберём, как именно запрос проходит весь путь до ответа.