Уроки курса
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 мин

Архитектурный паттерн MVC

Разбор концепции Model-View-Controller и понимание грамотного разделения логики приложения, работы с данными и интерфейса.

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

Архитектура MVC: Фундамент Laravel

Для создания масштабируемого интернет-магазина невозможно писать весь код (работу с БД, HTML-верстку и бизнес-логику) в одном файле. Это приведет к нечитаемому хаосу, известному как 'спагетти-код'. Для решения этой проблемы был придуман архитектурный паттерн MVC (Model-View-Controller). Фреймворк Laravel, на котором мы будем строить наш магазин, строго следует этому паттерну.

Используя метод Чанкинг, разобьем MVC на три составляющие:

  1. Model (Модель): Отвечает за данные и бизнес-логику. Модель общается с базой данных (через Eloquent ORM в Laravel). Например, модель Product знает, как получить товар из БД, проверить его наличие на складе или применить скидку.
  2. View (Представление): Отвечает за интерфейс пользователя (UI). Это HTML-шаблоны (в Laravel используется шаблонизатор Blade), которые получают данные от контроллера и отображают их пользователю. Представление не должно содержать сложных вычислений или прямых запросов к БД.
  3. Controller (Контроллер): Мозг операции. Принимает HTTP-запрос от пользователя (например, клик по кнопке 'Каталог'), обращается к Модели за нужными данными, а затем передает эти данные в Представление для формирования HTML-страницы.

В Laravel этот процесс начинается с Маршрутизатора (Router), который определяет, какой контроллер должен обработать конкретный URL.

График

Реализация MVC на практике

Давайте посмотрим, как выглядит базовая реализация MVC в Laravel, опираясь на архивные материалы (Вариант 1, Упражнение 3.1). Мы создадим маршрут, контроллер и вернем представление с данными.

1. Маршрутизация (routes/web.php): Мы связываем URL /products с методом index класса ProductController. Имя маршрута name('products.index') используется для удобной генерации ссылок в шаблонах, чтобы при изменении URL не пришлось переписывать весь HTML.

2. Контроллер (app/Http/Controllers/ProductController.php): Метод index обрабатывает запрос. В реальном приложении Laravel мы бы вызвали модель: $products = Product::all();. Но для демонстрации логики мы используем жестко заданный массив данных. Затем функция view() загружает шаблон и передает в него массив переменных.

Разделение ответственности (Separation of Concerns) — главный плюс MVC. Верстальщик может менять View, не трогая PHP-код Контроллера. Разработчик БД может оптимизировать Model, не ломая интерфейс.

php
<?php
// 1. Маршрутизация (routes/web.php)
use App\Http\Controllers\ProductController;
use Illuminate\Support\Facades\Route;

// При GET запросе на /products вызываем метод index контроллера ProductController
Route::get('/products', [ProductController::class, 'index'])->name('products.index');


// 2. Контроллер (app/Http/Controllers/ProductController.php)
namespace App\Http\Controllers;

class ProductController extends Controller {
    public function index() {
        // В реальном Laravel проекте здесь была бы работа с Моделью:
        // $products = \App\Models\Product::where('price', '>', 0)->get();
        
        // Имитация данных из БД для демонстрации паттерна
        $products = [
            ['id' => 1, 'name' => 'Laptop', 'price' => 1000],
            ['id' => 2, 'name' => 'Smartphone', 'price' => 500]
        ];

        // Возвращаем Представление (View) 'resources/views/products/index.blade.php'
        // и передаем туда данные (массив $products)
        return view('products.index', ['products' => $products]);
    }
}
?>

Какой компонент паттерна MVC несет ответственность за выполнение запросов к базе данных и содержит бизнес-логику приложения?

Как называется компонент MVC, который отвечает за отображение HTML-интерфейса пользователю?