Разработка современных веб-приложений на Laravel 12

Этот курс предназначен для быстрого старта в разработке на PHP с использованием фреймворка Laravel 12. Вы изучите архитектуру MVC, работу с базами данных через Eloquent ORM, создание безопасных API и подготовку проекта к релизу.

1. Введение в экосистему Laravel 12: Установка, конфигурация и структура проекта

Введение в экосистему Laravel 12: Установка, конфигурация и структура проекта

Добро пожаловать в курс «Разработка современных веб-приложений на Laravel 12». Это первая статья, с которой начнется ваше погружение в один из самых популярных и элегантных PHP-фреймворков в мире. Laravel изменил представление о разработке на PHP, сделав её не только эффективной, но и приятной.

В этой статье мы разберем фундамент: что такое Laravel, как подготовить рабочее окружение, установить фреймворк и, самое главное, как ориентироваться в его файловой структуре. Понимание этих основ критически важно для дальнейшей работы.

Что такое Laravel и философия MVC

Laravel — это веб-фреймворк с открытым исходным кодом, созданный Тейлором Отвеллом. Он базируется на архитектурном шаблоне MVC (Model-View-Controller). Если вы новичок в веб-разработке, давайте разберем эту аббревиатуру, так как она лежит в основе всего, что мы будем делать.

* Model (Модель): Отвечает за данные и бизнес-логику. Модели взаимодействуют с базой данных (получают, сохраняют, обновляют записи). * View (Представление): Это то, что видит пользователь. HTML-страницы, шаблоны, интерфейс. * Controller (Контроллер): Мозг приложения. Он принимает запрос от пользователя, обращается к модели за данными и передает их в представление.

Laravel берет на себя рутинные задачи: маршрутизацию, аутентификацию, сессии, кеширование и работу с базой данных, позволяя вам сосредоточиться на уникальной логике вашего приложения.

Подготовка окружения

Перед установкой Laravel 12 убедитесь, что ваш компьютер готов. Laravel — это современный инструмент, и он требует актуального программного обеспечения.

Вам понадобятся:

  • PHP: Версии 8.2 или выше. Laravel активно использует новые возможности языка.
  • Composer: Пакетный менеджер для PHP. Без него современная разработка на PHP невозможна. Он управляет зависимостями (библиотеками), которые использует ваш проект.
  • База данных: MySQL, PostgreSQL, SQLite или SQL Server. Для начала обучения отлично подойдет SQLite, так как она не требует установки отдельного сервера.
  • > Laravel — это глоток свежего воздуха для PHP-сообщества. Laravel Documentation

    Установка Laravel 12

    Существует несколько способов создать новый проект. Мы рассмотрим самый универсальный — через Composer.

    Откройте терминал (командную строку) и перейдите в папку, где вы храните свои проекты. Выполните следующую команду:

    Разберем эту команду: * composer create-project — команда композера для создания проекта на основе пакета. * laravel/laravel — название пакета (скелет приложения). * :^12.0 — явное указание версии (в данном случае мы запрашиваем 12-ю версию). * my-app — имя папки, в которую будет установлен проект.

    После завершения установки перейдите в папку проекта:

    Теперь можно запустить встроенный локальный сервер разработки:

    Вы увидите сообщение, похожее на Server running on [http://127.0.0.1:8000]. Откройте этот адрес в браузере. Если вы видите стартовую страницу Laravel — поздравляю, установка прошла успешно!

    Структура проекта Laravel

    Когда вы открываете проект в редакторе кода, количество папок может напугать. Не волнуйтесь, в Laravel 12 структура максимально оптимизирована и логична. Давайте пройдемся по ключевым директориям.

    !Структура директорий стандартного проекта Laravel

    Корневые директории

    * app: Здесь живет основной код вашего приложения. Контроллеры, модели, правила валидации — всё это находится здесь. По умолчанию папка содержит пространство имен App. * bootstrap: Содержит файлы, которые инициализируют фреймворк (запускают его) и настраивают автозагрузку. Здесь также находится файл app.php, который связывает всё воедино. * config: Здесь хранятся все конфигурационные файлы. Настройки базы данных, почты, очередей и сервисов находятся тут. * database: Содержит миграции (файлы для создания таблиц в БД), фабрики моделей и сиды (начальные данные). * public: Единственная папка, доступная из интернета. Здесь лежит файл index.php — точка входа в приложение, а также статические файлы: изображения, скомпилированные CSS и JavaScript. * resources: Здесь лежат ваши «сырые» ресурсы: шаблоны Blade (HTML), нескомпилированные CSS (Sass/Less) и JavaScript файлы. * routes: Здесь определяются маршруты вашего приложения. Файл web.php используется для веб-интерфейса, console.php — для консольных команд. * storage: Место для хранения логов, скомпилированных шаблонов, файлового кеша и загруженных пользователями файлов. * tests: Папка для автоматических тестов (Unit и Feature). * vendor: Сюда Composer устанавливает все зависимости (библиотеки). Никогда не редактируйте файлы в этой папке.

    Погружение в папку app

    Папка app — это ваше рабочее место. В Laravel 12 она имеет упрощенную структуру по сравнению со старыми версиями.

  • Http/Controllers: Здесь лежат контроллеры. Они обрабатывают запросы пользователей.
  • Models: Здесь находятся Eloquent-модели. Каждая модель обычно соответствует таблице в базе данных (например, модель User соответствует таблице users).
  • Конфигурация и окружение (.env)

    Одна из важнейших концепций в Laravel — разделение конфигурации и кода. Настройки, которые могут меняться в зависимости от того, где запущен код (на вашем локальном компьютере или на боевом сервере), хранятся в файле .env.

    Файл .env находится в корне проекта. Откройте его. Вы увидите пары «ключ=значение»:

    Важные правила работы с .env:

  • APP_KEY: Уникальный ключ шифрования. Он генерируется автоматически при установке. Если его нет, сессии и зашифрованные данные не будут работать.
  • APP_DEBUG: В режиме true (локальная разработка) Laravel показывает подробные ошибки. На реальном сервере (production) это значение обязательно должно быть false, иначе вы раскроете конфиденциальные данные пользователям.
  • Игнорирование в Git: Файл .env включен в .gitignore. Это значит, что он не попадает в репозиторий кода. Это сделано для безопасности (чтобы не «слить» пароли от базы данных) и для того, чтобы у каждого разработчика были свои настройки.
  • Если вы клонируете чужой проект, файла .env у вас не будет. Вам нужно скопировать файл .env.example в .env и настроить его.

    Жизненный цикл запроса

    Чтобы писать качественный код, нужно понимать, как Laravel обрабатывает запрос. Давайте проследим путь запроса от клика пользователя до отображения страницы.

    !Жизненный цикл HTTP-запроса в Laravel

  • Точка входа: Все запросы попадают в public/index.php. Этот файл загружает автозагрузчик Composer и создает экземпляр приложения.
  • Ядро (Kernel): Запрос передается в HTTP-ядро. Здесь происходит первичная обработка: старт сессии, проверка CSRF-токенов и выполнение глобальных промежуточных слоев (middleware).
  • Маршрутизация (Router): Laravel смотрит в файлы папки routes (обычно web.php), чтобы понять, какой код должен обработать этот URL.
  • Контроллер: Если маршрут найден, управление передается методу контроллера.
  • Логика и Данные: Контроллер может обратиться к Модели для получения данных из БД.
  • Представление: Контроллер возвращает Представление (View), заполненное данными.
  • Ответ: Laravel преобразует это в HTTP-ответ и отправляет браузеру.
  • Artisan: Ваш верный помощник

    В корне проекта находится файл artisan. Это интерфейс командной строки (CLI) Laravel. Он может создавать файлы, запускать миграции, очищать кеш и многое другое.

    Попробуйте ввести в терминале:

    Вы увидите список всех доступных команд. Мы будем использовать Artisan в каждом уроке этого курса. Например, создание контроллера делается одной командой:

    Это создаст файл PostController.php в нужной папке с правильным шаблоном кода. Это экономит время и исключает ошибки.

    Заключение

    Сегодня мы заложили первый камень в фундамент вашего мастерства Laravel. Мы установили фреймворк, разобрали его структуру, узнали о файле .env и проследили путь запроса.

    В следующей статье мы углубимся в маршрутизацию (Routing) — научимся создавать красивые URL-адреса и направлять пользователей туда, куда им нужно.

    Убедитесь, что у вас установлен и работает проект, прежде чем переходить к следующему этапу. Удачи в обучении!

    2. Основы HTTP: Маршрутизация, контроллеры, Middleware и шаблонизация с Blade

    Основы HTTP: Маршрутизация, контроллеры, Middleware и шаблонизация с Blade

    В предыдущей статье мы успешно установили Laravel 12 и познакомились с его файловой структурой. Теперь у нас есть фундамент, но наш дом пока пуст. Чтобы приложение ожило и начало взаимодействовать с пользователем, нам нужно разобраться, как оно обрабатывает входящие запросы.

    Сегодня мы изучим «кровеносную систему» вашего приложения: как URL превращается в код (Маршрутизация), кто принимает решения (Контроллеры), кто стоит на страже безопасности (Middleware) и как показать результат пользователю (Blade).

    Маршрутизация (Routing): Карта вашего приложения

    В веб-разработке всё начинается с HTTP-запроса. Когда пользователь вводит адрес в браузере (например, your-site.com/about), сервер должен знать, что делать. В Laravel за это отвечают маршруты (routes).

    Все маршруты для веб-интерфейса находятся в файле routes/web.php. Откройте этот файл. Вы увидите примерно такой код:

    Это простейший маршрут. Он говорит: «Если пришел GET-запрос на главную страницу (/), выполни эту функцию и верни представление welcome».

    Основные методы маршрутизации

    Laravel поддерживает все HTTP-глаголы. Вы будете использовать их в зависимости от действия:

    * Route::get(callback) — получение данных (просмотр страницы). * Route::post(callback) — отправка данных (например, формы). * Route::put(callback) / Route::patch(callback) — обновление данных. * Route::delete(callback) — удаление данных.

    Параметры маршрутов

    Часто URL содержит динамические данные, например, ID товара или имя пользователя. В Laravel это делается с помощью фигурных скобок:

    Вы можете делать параметры необязательными, добавляя знак вопроса ?, но тогда нужно указать значение по умолчанию в функции:

    Именованные маршруты

    Это одна из лучших практик Laravel. Вместо того чтобы жестко прописывать URL-адреса в коде (например, в ссылках), вы даете маршруту имя. Если URL изменится, вам не придется искать и менять его по всему проекту.

    Теперь, чтобы создать ссылку на этот маршрут, вы используете помощник route():

    html <h1>Привет, {{ price > 100) <p>Это дорогой товар</p> @else <p>Доступная цена</p> @endif blade <ul> @foreach (user) <li>{{ products = ['Яблоко', 'Банан', 'Вишня']; // Функция view принимает имя шаблона (без .blade.php) и массив данных return view('products.index', ['items' => items as item }}</li> @endforeach </ul> ```

    Заключение

    Сегодня мы научились управлять потоком информации в Laravel. Мы узнали, как:

  • Создавать маршруты для обработки URL.
  • Использовать контроллеры для организации логики.
  • Применять middleware для защиты маршрутов.
  • Использовать Blade для создания красивых и динамичных страниц.
  • Теперь вы можете создавать статические сайты и простые динамические страницы. Но современные приложения требуют работы с данными. В следующей статье мы погрузимся в магию баз данных и изучим Eloquent ORM — инструмент, который превращает работу с таблицами БД в удовольствие.

    Практикуйтесь в создании маршрутов и шаблонов, это база, на которой строится всё остальное.

    3. Базы данных и Eloquent ORM: Миграции, фабрики и управление связями моделей

    Базы данных и Eloquent ORM: Миграции, фабрики и управление связями моделей

    В предыдущих статьях мы научились настраивать окружение Laravel 12, обрабатывать HTTP-запросы и отображать страницы с помощью Blade. Однако до сих пор наши приложения были статичными. Они не умели «запоминать» информацию. Пришло время добавить нашему приложению память.

    В этой статье мы погрузимся в работу с базами данных. Но не пугайтесь: вам не придется писать километры SQL-запросов вручную. Laravel предлагает элегантные инструменты — Миграции и Eloquent ORM, которые превращают рутинную работу с данными в искусство.

    Настройка соединения

    Laravel поддерживает «из коробки» работу с MySQL, PostgreSQL, SQLite и SQL Server. Настройки подключения находятся в файле config/database.php, но, как мы помним, чувствительные данные (пароли, хосты) мы храним в .env.

    Убедитесь, что в вашем .env файле настроено соединение. Для обучения проще всего использовать SQLite, так как она не требует отдельного сервера:

    Если вы используете SQLite, не забудьте создать пустой файл базы данных:

    Миграции: Версионный контроль для базы данных

    Представьте, что вы работаете в команде. Ваш коллега добавил новую таблицу в базу данных. Как он передаст эти изменения вам? Отправит SQL-файл по почте? Это путь к хаосу.

    Миграции — это как Git, но для структуры вашей базы данных. Они позволяют описывать таблицы и колонки на чистом PHP, а затем применять эти изменения одной командой.

    !Визуализация процесса применения и отката миграций как путешествие во времени для структуры БД.

    Создание миграции

    Давайте создадим таблицу для хранения статей блога. Используем Artisan:

    В папке database/migrations появится новый файл с временной меткой. Откройте его. Вы увидите два метода: up() и down().

    * up(): Описывает, какие изменения нужно внести (создать таблицу, добавить колонку). * down(): Описывает, как отменить эти изменения (удалить таблицу).

    Заполним метод up:

    Запуск миграций

    Чтобы применить изменения и создать таблицу в БД, выполните:

    Если вы допустили ошибку, можно откатить последнее действие:

    > Миграции позволяют развернуть точную копию структуры базы данных на любом компьютере за секунды. Laravel Migrations Docs

    Eloquent ORM: Объекты вместо строк

    Работа с «голым» SQL (например, SELECT * FROM posts) эффективна, но утомительна. Laravel предлагает Eloquent ORM (Object-Relational Mapping). Это реализация паттерна Active Record.

    Суть проста: Каждая таблица в базе данных имеет соответствующий класс-модель.

    * Таблица posts -> Модель Post * Таблица users -> Модель User

    Создание модели

    Создадим модель для нашей таблицы постов:

    Файл создастся в app/Models/Post.php. По умолчанию он пустой, но он уже обладает огромной силой, наследуясь от Illuminate Database Eloquent Model.

    CRUD операции с Eloquent

    Теперь мы можем управлять данными, используя PHP-код. Допустим, мы пишем этот код в контроллере.

    1. Создание записи (Create):

    Или более короткий способ (требует настройки свойства posts = Post::all();

    // Найти статью по ID (например, 1) publishedPosts = Post::where('is_published', true)->get(); php post->title = 'Обновленный заголовок'; post = Post::find(1); this->hasMany(Post::class); } php public function user() { return user = User::find(1); foreach (post) { echo post = Post::find(1); echo this->belongsToMany(Tag::class); } php posts as post->user->name; // +1 запрос для КАЖДОЙ статьи } php $posts = Post::with('user')->get(); // Всего 2 запроса к БД, независимо от количества статей ``

    Laravel заранее загрузит всех нужных пользователей и «подставит» их к статьям.

    Заключение

    Сегодня мы превратили наше приложение из статической страницы в динамическую систему. Мы узнали:

  • Как управлять структурой БД через Миграции.
  • Как взаимодействовать с данными через Eloquent модели.
  • Как генерировать тестовые данные через Фабрики.
  • Как настраивать Связи между таблицами и избегать проблем с производительностью.
  • Теперь у нас есть данные, но как позволить пользователям безопасно добавлять их? В следующей статье мы разберем Валидацию данных и работу с формами — научимся защищать приложение от некорректного ввода и хакерских атак.

    4. Безопасность и взаимодействие: Валидация форм, аутентификация и авторизация пользователей

    Безопасность и взаимодействие: Валидация форм, аутентификация и авторизация пользователей

    В предыдущей статье мы научились создавать базу данных и управлять ею с помощью Eloquent ORM. Теперь наше приложение умеет хранить информацию. Но здесь возникает критический вопрос: доверяем ли мы данным, которые присылают пользователи?

    Ответ в веб-разработке всегда один: никогда. Пользователь может случайно ввести некорректный email, оставить поле пустым или, что хуже, злоумышленник может попытаться внедрить вредоносный код.

    В этой статье мы построим крепостную стену вокруг нашего приложения. Мы разберем три столпа безопасности веб-приложений на Laravel 12:

  • Валидация: Проверка входящих данных на соответствие правилам.
  • Аутентификация: Процесс опознавания пользователя (кто ты?).
  • Авторизация: Проверка прав доступа (что тебе можно делать?).
  • Валидация данных: Первая линия обороны

    Валидация — это процесс проверки данных перед тем, как они попадут в вашу бизнес-логику или базу данных. Laravel делает этот процесс невероятно простым и интуитивным.

    Базовая валидация в контроллере

    Представьте, что у нас есть форма создания статьи. В контроллере PostController мы получаем объект Request. Самый быстрый способ проверить данные — использовать метод validate.

    Разберем правила, использованные выше: * required: Поле обязательно для заполнения. * max:255: Строка не длиннее 255 символов. * unique:posts: Значение должно быть уникальным в таблице posts. * exists:categories,id: Значение должно существовать в колонке id таблицы categories.

    !Визуализация потока данных при валидации: фильтрация некорректных запросов.

    Form Requests: Чистота контроллеров

    Писать правила валидации прямо в контроллере удобно для простых задач. Но если правил много, контроллер становится громоздким. Laravel предлагает элегантное решение — Form Requests (Форм-реквесты).

    Это отдельные классы, содержащие логику валидации. Создадим такой класс:

    В файле app/Http/Requests/StorePostRequest.php есть два метода:

  • authorize(): Определяет, имеет ли пользователь право выполнять этот запрос (вернем true для начала).
  • rules(): Возвращает массив правил валидации.
  • Теперь в контроллере мы заменяем стандартный Request на наш класс:

    Вывод ошибок в Blade

    Когда валидация не проходит, Laravel перенаправляет пользователя назад. Ошибки доступны в специальной переменной message }}</div> @enderror blade <form method="POST" action="/posts"> @csrf <!-- Поля формы --> </form> php use Illuminate\Support\Facades\Auth;

    // Получить модель User текущего пользователя id = Auth::id(); php if (Auth::check()) { // Пользователь авторизован } php Route::get('/dashboard', function () { return view('dashboard'); })->middleware('auth'); php use Illuminate\Support\Facades\Gate; use App\Models\User;

    public function boot(): void { Gate::define('access-admin', function (User user->is_admin === true; }); } php if (Gate::allows('access-admin')) { // Доступ разрешен } bash php artisan make:policy PostPolicy --model=Post php public function update(User post): bool { // Разрешить, только если ID пользователя совпадает с ID автора статьи return post->user_id; } php public function update(Request post) { // Если проверка не пройдет, выбросится исключение 403 Forbidden Gate::authorize('update', post) <a href="{{ route('posts.edit', $post) }}">Редактировать</a> @endcan ``

    Заключение

    Безопасность — это не опция, а необходимость. Сегодня мы научились:

  • Валидировать данные, чтобы защитить базу данных от мусора и атак.
  • Использовать Form Requests для чистоты кода.
  • Различать аутентификацию и авторизацию.
  • Настраивать права доступа с помощью Политик.
  • Теперь ваше приложение не только функционально, но и защищено. В следующей статье мы выйдем за пределы стандартного веб-интерфейса и поговорим о разработке API и интеграции с фронтенд-фреймворками, что является стандартом для современных веб-приложений.

    5. Финальные штрихи: Разработка REST API, автоматическое тестирование и деплой приложения

    Финальные штрихи: Разработка REST API, автоматическое тестирование и деплой приложения

    Поздравляю! Вы прошли долгий путь от установки Laravel до создания полноценного веб-приложения с базой данных и системой безопасности. Однако в современном мире веб-разработки просто «работающего кода» недостаточно. Профессиональное приложение должно уметь общаться с другими системами, быть надежным и готовым к высоким нагрузкам.

    В этой заключительной статье курса мы превратим наш проект в мощный инструмент. Мы научимся создавать REST API для мобильных приложений или SPA (Single Page Applications), напишем автоматические тесты, чтобы спать спокойно, и разберем процесс выкладки приложения на боевой сервер (деплой).

    Разработка REST API

    До этого момента мы возвращали пользователю HTML-страницы с помощью Blade. Но что, если вы хотите создать мобильное приложение для iOS или Android, которое будет использовать ту же базу данных? Мобильному приложению не нужен HTML, ему нужны «сырые» данные, обычно в формате JSON.

    Laravel 12 делает создание API невероятно простым. Начиная с 11-й версии, API не включено по умолчанию, чтобы не перегружать структуру. Поэтому первым делом нам нужно установить поддержку API.

    Выполните команду в терминале:

    Эта команда создаст файл routes/api.php и установит Laravel Sanctum — пакет для аутентификации через токены (о нем мы поговорим чуть позже).

    Маршруты API

    Откройте файл routes/api.php. Здесь всё работает так же, как и в web.php, но с одним отличием: ко всем маршрутам автоматически добавляется префикс /api.

    Если вы запустите сервер и перейдете по адресу http://your-app.test/api/posts, Laravel будет ожидать ответ в формате JSON.

    API Resources: Трансформация данных

    Когда вы возвращаете модель Eloquent из API-маршрута, Laravel автоматически преобразует её в JSON. Однако часто нам нужно скрыть определенные поля (например, password или created_at) или изменить структуру данных.

    Для этого используются API Resources (Ресурсы). Это слой трансформации между вашей базой данных и ответом пользователю.

    !Слой ресурсов API фильтрует и форматирует данные перед отправкой клиенту.

    Создадим ресурс для наших статей:

    В файле app/Http/Resources/PostResource.php настроим метод toArray:

    Теперь применим этот ресурс в контроллере:

    Теперь ваш API возвращает строго структурированные данные, и вы можете менять структуру базы данных, не ломая работу мобильных приложений, просто подправив ресурс.

    Статусы ответов HTTP

    Хороший API всегда возвращает правильные HTTP-коды:

    * 200 OK: Успешный запрос. * 201 Created: Успешное создание ресурса (после POST). * 204 No Content: Успешное удаление или обновление без возврата данных. * 401 Unauthorized: Ошибка аутентификации. * 403 Forbidden: Ошибка доступа (авторизации). * 404 Not Found: Ресурс не найден. * 422 Unprocessable Entity: Ошибка валидации данных.

    Пример в контроллере:

    Автоматическое тестирование

    Представьте, что вы внесли небольшое изменение в код регистрации пользователей. Как убедиться, что вы ничего не сломали? Заходить на сайт, регистрироваться вручную, проверять базу данных? Это долго. А если таких функций сотни?

    Автоматические тесты — это код, который проверяет другой код. Laravel построен с мыслью о тестировании и использует PHPUnit (или Pest в новых установках) под капотом.

    В папке tests есть две директории:

  • Feature (Функциональные тесты): Проверяют большие куски функционала, например, «пользователь может зайти на страницу и отправить форму».
  • Unit (Модульные тесты): Проверяют отдельные методы или классы в изоляции.
  • Написание первого теста

    Давайте протестируем наш API для получения списка статей. Создадим тест:

    Откроем созданный файл в tests/Feature/PostApiTest.php и напишем сценарий:

    Чтобы запустить тесты, выполните команду:

    Если вы видите зеленый цвет — поздравляю, ваш код работает корректно! Если красный — тест покажет, где именно произошла ошибка.

    > Тестирование — это инвестиция времени. Сначала кажется, что вы пишете код в два раза дольше, но в будущем это сэкономит вам часы отладки. Laravel Testing Docs

    Деплой приложения (Deployment)

    Ваше приложение готово, протестировано и работает локально. Пришло время показать его миру. Деплой — это процесс переноса приложения с вашего компьютера на публичный сервер.

    Подготовка к продакшену

    На боевом сервере настройки должны отличаться от локальных. Вот чек-лист критически важных изменений в файле .env:

  • APP_ENV=production: Сообщает Laravel, что мы в боевом режиме.
  • APP_DEBUG=false: Критически важно! Если оставить true, при ошибке любой пользователь увидит ваши пароли, ключи и код.
  • APP_KEY: Должен быть уникальным и секретным.
  • Оптимизация производительности

    Laravel предоставляет команды для кеширования конфигураций и маршрутов, что значительно ускоряет загрузку:

    Важно: После выполнения config:cache функция env() в вашем коде перестанет работать (она будет возвращать null). Поэтому используйте env() только внутри конфигурационных файлов в папке config/, а в коде обращайтесь к ним через хелпер config('app.name').

    Требования к серверу

    Для запуска Laravel 12 вам понадобится сервер (VPS) с установленным ПО:

    * Web Server: Nginx или Apache. * PHP: Версия 8.2+ с расширениями (BCMath, Ctype, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML). * Database: MySQL, PostgreSQL или другая поддерживаемая БД. * Composer: Для установки зависимостей.

    !Типичная схема взаимодействия компонентов на боевом сервере.

    Процесс деплоя (упрощенно)

  • Копирование кода: Обычно через git clone или git pull на сервере.
  • Установка зависимостей: composer install --optimize-autoloader --no-dev.
  • Миграции: php artisan migrate --force (флаг force нужен для продакшена).
  • Права доступа: Папки storage и bootstrap/cache должны быть доступны для записи веб-сервером.
  • Символическая ссылка: php artisan storage:link для доступа к загруженным файлам.
  • Инструменты для деплоя

    Ручной деплой утомителен и чреват ошибками. В экосистеме Laravel есть инструменты, которые делают это автоматически:

    * Laravel Forge: Сервис от создателя Laravel, который автоматически настраивает сервер (Nginx, PHP, MySQL) и деплоит код из Git. * Laravel Envoyer: Инструмент для деплоя с нулевым временем простоя (Zero Downtime Deployment).

    Заключение курса

    Мы прошли большой путь. Вы изучили архитектуру MVC, маршрутизацию, работу с базой данных через Eloquent, безопасность, создание API и основы тестирования. Laravel 12 — это мощный инструмент, который растет вместе с вами.

    Что изучать дальше? * Очереди (Queues): Для выполнения тяжелых задач в фоне (например, отправка email). * События и Слушатели (Events & Listeners): Для построения слабой связности в коде. * Laravel Sanctum / Passport: Для глубокого изучения API аутентификации.

    Спасибо, что были с нами в этом курсе. Пишите код, тестируйте его и создавайте удивительные вещи!