Уроки курса
1 Основы синтаксиса PHP 8
60 мин
2 Функции и управляющие конструкции
60 мин
3 Объектно-ориентированное программирование на PHP
60 мин
4 Наследование, интерфейсы и полиморфизм
60 мин
5 Основы баз данных MySQL и работа через PDO
60 мин
6 Архитектурный паттерн MVC
60 мин
7 Введение в Laravel и настройка окружения
60 мин
8 Маршрутизация и контроллеры в Laravel
60 мин
9 Шаблонизатор Blade и создание интерфейса
60 мин
10 Миграции баз данных и Eloquent ORM
60 мин
11 Связи моделей в Eloquent — Настройка связей 'один …
60 мин
12 Аутентификация и защита маршрутов
60 мин
13 Разработка каталога товаров и категорий
60 мин
14 Реализация корзины покупок через сессии
60 мин
15 Оформление заказа и транзакции базы данных
60 мин
16 Интеграция платежной системы Stripe
60 мин
17 Интеграция платежной системы Vipps
60 мин
18 Разработка панели администратора
60 мин
19 Оптимизация и подготовка к production
60 мин
20 Деплой Laravel-приложения на сервер
60 мин
21 Основы PHP 8: Синтаксис, переменные и управляющие конструкции
60 мин
22 Функции и массивы в PHP 8
60 мин
23 Объектно-ориентированное программирование: Классы и объекты
60 мин
24 Продвинутое ООП: Наследование, интерфейсы и полиморфизм
60 мин
25 Основы баз данных: Проектирование БД и работа с …
60 мин
26 Взаимодействие PHP с MySQL через PDO
60 мин
27 Архитектура MVC и введение в фреймворк Laravel
60 мин
28 Маршрутизация и контроллеры в Laravel
60 мин
29 Шаблонизатор Blade: Создание пользовательского интерфейса
60 мин
30 Миграции и Eloquent ORM: Создание таблиц товаров
60 мин
31 Связи в Eloquent ORM: Отношения между моделями
60 мин
32 Аутентификация и авторизация пользователей
60 мин
33 Разработка каталога товаров: Вывод, фильтрация и пагинация
60 мин
34 Реализация корзины покупок с использованием сессий
60 мин
35 Оформление заказа: Работа с формами и валидация
60 мин
36 Транзакции базы данных: Сохранение заказа
60 мин
37 Интеграция платежной системы Stripe
60 мин
38 Интеграция платежной системы Vipps
60 мин
39 Создание панели администратора
60 мин
40 Подготовка к production и деплой приложения
60 мин
41 Основы PHP 8 и синтаксис
60 мин
42 Объектно-ориентированное программирование на PHP
60 мин
43 Продвинутое ООП и интерфейсы
60 мин
44 Основы баз данных и MySQL
60 мин
45 Архитектурный паттерн MVC
60 мин
46 Введение в Laravel и маршрутизация
60 мин
47 Шаблонизатор Blade и верстка интерфейса
60 мин
48 Миграции и структура базы данных
60 мин
49 Eloquent ORM и модели
60 мин
50 Отношения в Eloquent ORM
60 мин
51 Авторизация и защита маршрутов
60 мин
52 Создание каталога товаров
60 мин
53 Реализация корзины покупок
60 мин
54 Оформление заказа и транзакции БД
60 мин
55 Интеграция платежной системы Stripe
60 мин
56 Интеграция платежной системы Vipps
60 мин
57 Панель администратора: управление товарами
60 мин
58 Панель администратора: управление заказами
60 мин
59 Подготовка к production и деплой
60 мин
60 Запуск и тестирование готового интернет-магазина
60 мин

Введение в Laravel и маршрутизация

Установка фреймворка, изучение структуры директорий, настройка маршрутов (Routing) и создание базовых контроллеров для интернет-магазина.

Прогресс урока: 0%

Добро пожаловать в мир Laravel

До сих пор мы изучали чистый PHP и базовые концепции ООП. Теперь настало время перейти к профессиональной разработке с использованием фреймворка Laravel. Фреймворк — это каркас приложения, который предоставляет готовые инструменты для решения рутинных задач: маршрутизации, работы с базами данных, аутентификации и безопасности. Laravel является самым популярным PHP-фреймворком в мире благодаря своему элегантному синтаксису и мощной экосистеме.

В основе Laravel лежит архитектурный паттерн MVC (Model-View-Controller), который мы обсуждали ранее. Laravel берет на себя всю черновую работу: он автоматически загружает классы (благодаря стандарту PSR-4 и Composer), защищает от SQL-инъекций и XSS-атак, а также предоставляет удобный интерфейс командной строки (CLI) под названием Artisan. В контексте нашего интернет-магазина Laravel позволит нам сосредоточиться на бизнес-логике (например, расчете скидок или интеграции со Stripe), а не на написании кода для подключения к базе данных.

Важнейший концепт, который нужно усвоить на старте — это Жизненный цикл запроса. Когда пользователь вводит URL (например, `yoursite.com/products`), запрос попадает в единую точку входа — файл public/index.php. Оттуда он передается в маршрутизатор (Router), который решает, какой Контроллер должен обработать этот запрос. Это называется маршрутизацией. Если маршрут не найден, Laravel автоматически вернет красивую страницу с ошибкой 404.

php
// Пример базовой маршрутизации в Laravel (файл routes/web.php)
use Illuminate\Support\Facades\Route;

// Базовый GET-запрос. Возвращает представление (View)
Route::get('/', function () {
    return view('welcome');
});

// Маршрут для каталога товаров нашего интернет-магазина
Route::get('/products', function () {
    return 'Здесь будет список товаров';
});

// Маршрут с динамическим параметром (ID товара)
Route::get('/product/{id}', function ($id) {
    return "Вы просматриваете товар с ID: " . $id;
});

Контроллеры: Мозг вашего приложения

Хотя мы можем возвращать текст или HTML прямо из файла маршрутов (как показано в примере выше), в реальных проектах так никогда не делают. Это нарушает принцип единственной ответственности. Файл маршрутов должен быть просто 'картой' сайта, а вся логика обработки запроса должна находиться в Контроллерах.

Контроллер — это обычный PHP-класс, который группирует связанную логику обработки HTTP-запросов. Для создания контроллеров в Laravel используется консольная утилита Artisan. Выполняя команду php artisan make:controller ProductController, вы генерируете заготовку класса в директории app/Http/Controllers.

Типичная ошибка новичков — писать огромные методы (экшены) в контроллерах, смешивая бизнес-логику, запросы к БД и форматирование данных. Контроллер должен быть 'тонким': он принимает запрос от маршрутизатора, просит Модель дать данные и передает эти данные в Представление (View). В нашем магазине ProductController будет иметь методы index() для вывода всех товаров и show($id) для вывода одного конкретного товара.

php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProductController extends Controller
{
    // Метод для отображения списка товаров
    public function index()
    {
        // В будущем здесь будет запрос к БД через Eloquent
        $products = [
            ['id' => 1, 'name' => 'Laptop', 'price' => 1000],
            ['id' => 2, 'name' => 'Phone', 'price' => 500]
        ];

        return view('products.index', ['products' => $products]);
    }
}

// Как теперь выглядит маршрут в routes/web.php:
// Route::get('/products', [ProductController::class, 'index'])->name('products.index');

Какой файл в Laravel отвечает за регистрацию маршрутов, доступных через браузер (с поддержкой сессий и CSRF-защиты)?

Напишите команду Artisan для создания контроллера с именем CartController.

Задание

Сценарий: Настройка маршрутизации для корзины. Вам необходимо подготовить базовую структуру для работы с корзиной покупок.

  • Откройте терминал и выполните команду php artisan make:controller CartController.
  • В созданном контроллере добавьте публичный метод index(), который пока возвращает строку 'Корзина'.
  • Откройте файл routes/web.php.
  • Добавьте GET-маршрут '/cart', который ссылается на метод index класса CartController.
  • Присвойте маршруту имя 'cart.index' с помощью метода name().
10 баллов