Зачем вообще Laravel:
PHP сам по себе позволяет написать что угодно, но на голом PHP вы будете заново изобретать маршрутизацию, работу с базой, шаблоны и авторизацию. Laravel даёт всё это из коробки плюс зрелую экосистему: очереди, почта, тесты, тысячи готовых пакетов. На рынке СНГ это самый востребованный PHP-фреймворк, вакансий под него стабильно больше, чем под Symfony и Yii вместе взятые. Мы работаем с Laravel 12, ему нужен PHP не ниже 8.2.
Что понадобится:
Три вещи: PHP 8.2+ с набором расширений, Composer (менеджер пакетов для PHP) и консоль. Редактор на ваш вкус, чаще всего PhpStorm или VS Code с расширением Intelephense.
Самый короткий путь на Windows и macOS: поставить Laravel Herd, официальное приложение, которое одним установщиком даёт PHP, nginx и Composer. Базовая версия бесплатная. На Windows также популярен Laragon. На Linux ставим пакетами, Composer берём скриптом с официального сайта, потом проверяем версии:
Код: Выделить всё
sudo apt install php8.3-cli php8.3-mbstring php8.3-xml php8.3-curl php8.3-sqlite3 php8.3-zip unzip
php -v
composer --version
Два равноценных способа. Либо напрямую через Composer, либо через официальный установщик. Второй удобнее: он умеет сразу подключать стартовые киты.
Код: Выделить всё
# способ 1: через composer
composer create-project laravel/laravel blog
# способ 2: официальный установщик
composer global require laravel/installer
laravel new blog
Код: Выделить всё
cd blog
php artisan serve
# если хотите конкретный порт
php artisan serve --port=8080
Что внутри проекта:
Коротко по папкам, подробности будут по ходу курса. В app/ живёт ваш код: модели, контроллеры, middleware. В routes/ лежат файлы маршрутов, в главе 2 мы проведём там много времени. resources/views/ хранит Blade-шаблоны (глава 3), database/ хранит миграции и сиды (глава 4). config/ отвечает за конфигурацию, а public/ единственная папка, которая смотрит наружу, в ней лежит index.php.
Отдельно про файл .env. В нём настройки конкретной машины: подключение к базе, почта, секретные ключи. Файл не попадает в git, у каждого окружения он свой. С версии 11 Laravel по умолчанию использует SQLite, база лежит в файле database/database.sqlite, поэтому для старта не нужен ни MySQL, ни Docker. На боевом сервере базу поменяем, но это позже.
Типичные грабли:
Запустили второй проект, а serve молча сел на порт 8001. Это нормально: artisan перебирает порты с 8000 по 8010, пока не найдёт свободный. Смотрите, какой адрес он напечатал, или задавайте порт явно, пример выше.
Ошибка could not find driver при первом открытии страницы. Не установлено расширение pdo_sqlite: на Ubuntu его даёт пакет php8.3-sqlite3, в Herd оно есть из коробки.
Склонировали чужой проект и получили ошибку про cipher или пустой APP_KEY. В репозиториях нет файла .env, его создают из шаблона и генерируют ключ:
Код: Выделить всё
cp .env.example .env
composer install
php artisan key:generate
Итог:
У вас стоит PHP с Composer, создан проект blog и он открывается в браузере. Вы знаете, за что отвечают основные папки и где живут настройки окружения. В следующей главе берёмся за маршруты и контроллеры: научим приложение отвечать на разные адреса нашим кодом, а не одной стартовой заглушкой.